Skip to content

Instantly share code, notes, and snippets.

View mscha's full-sized avatar

Michael Schaap mscha

View GitHub Profile
#!/usr/bin/env raku
use v6.d;
$*OUT.out-buffer = False; # Autoflush
# Advent of Code 2024 day 19 -- https://adventofcode.com/2024/day/19
class TowelArranger
{
has @.towels;
has @.designs;
@mscha
mscha / aoc15
Last active December 15, 2024 18:29
Advent of Code 2024 day 15
#!/usr/bin/env raku
use v6.d;
$*OUT.out-buffer = False; # Autoflush
# Advent of Code 2024 day 15 -- https://adventofcode.com/2024/day/15
enum Direction <north east south west>;
sub left(Direction $d --> Direction) { Direction(($d - 1) % 4) }
sub right(Direction $d --> Direction) { Direction(($d + 1) % 4) }
sub turn(Direction $d --> Direction) { Direction(($d + 2) % 4) }
@mscha
mscha / aoc14
Last active December 14, 2024 15:51
Advent of Code 2024 day 14
#!/usr/bin/env raku
use v6.d;
$*OUT.out-buffer = False; # Autoflush
# Advent of Code 2024 day 14 -- https://adventofcode.com/2024/day/14
class Vector
{
has Int $.x;
has Int $.y;
@mscha
mscha / aoc13
Last active December 13, 2024 11:48
Advent of Code 2024 day 13
#!/usr/bin/env raku
use v6.d;
$*OUT.out-buffer = False; # Autoflush
# Advent of Code 2024 day 13 -- https://adventofcode.com/2024/day/13
sub button-presses($ax,$ay, $bx,$by, $px,$py)
{
# We need to find (non-negative integer) m and n so that
# m × (ax,ay) + n × (bx,by) = (px,py)
@mscha
mscha / aoc12
Created December 12, 2024 14:16
Advent of Code 2024 day 12
#!/usr/bin/env raku
use v6.d;
$*OUT.out-buffer = False; # Autoflush
# Advent of Code 2024 day 12 -- https://adventofcode.com/2024/day/12
enum Direction <north east south west>;
sub left(Direction $d --> Direction) { Direction(($d - 1) % 4) }
sub right(Direction $d --> Direction) { Direction(($d + 1) % 4) }
sub turn(Direction $d --> Direction) { Direction(($d + 2) % 4) }
@mscha
mscha / aoc11
Last active December 11, 2024 15:33
Advent of Code 2024 day 11
#!/usr/bin/env raku
use v6.d;
$*OUT.out-buffer = False; # Autoflush
# Advent of Code 2024 day 11 -- https://adventofcode.com/2024/day/11
sub split-in-half($n) { $n.comb(/\w ** { $n.chars div 2 }/)».Int }
use experimental :cached;
multi blink($stone, $times) is cached
@mscha
mscha / aoc11a
Created December 11, 2024 14:22
Advent of Code 2024 day 11 - first attempt (too slow for part 2)
#!/usr/bin/env raku
use v6.d;
$*OUT.out-buffer = False; # Autoflush
# Advent of Code 2024 day 11 -- https://adventofcode.com/2024/day/11
class MagicStones
{
has Int @.stones;
@mscha
mscha / aoc10
Last active December 10, 2024 12:16
Advent of Code 2024 day 10
#!/usr/bin/env raku
use v6.d;
$*OUT.out-buffer = False; # Autoflush
# Advent of Code 2024 day 10 -- https://adventofcode.com/2024/day/10
enum Direction <north east south west>;
class Position
{
@mscha
mscha / aoc09
Last active December 9, 2024 12:52
Advent of Code 2024 day 9
#!/usr/bin/env raku
use v6.d;
$*OUT.out-buffer = False; # Autoflush
# Advent of Code 2024 day 9 -- https://adventofcode.com/2024/day/9
class DiskMap
{
has $.map;
@mscha
mscha / aoc08
Last active December 8, 2024 14:53
Advent of Code 2024 day 8
#!/usr/bin/env raku
use v6.d;
$*OUT.out-buffer = False; # Autoflush
# Advent of Code 2024 day 8 -- https://adventofcode.com/2024/day/8
class Position
{
has Int $.x;
has Int $.y;