Skip to content

Instantly share code, notes, and snippets.

View mscha's full-sized avatar

Michael Schaap mscha

View GitHub Profile
@mscha
mscha / aoc08
Last active December 8, 2025 13:03
Advent of Code 2025 day 8
#!/usr/bin/env raku
use v6.d;
$*OUT.out-buffer = False; # Autoflush
# Advent of Code 2025 day 8 -- https://adventofcode.com/2025/day/8
unit sub MAIN(IO() $inputfile where *.f = 'aoc08.input', Bool :v(:$verbose) = False);
class ElectricalSystem
{
@mscha
mscha / aoc07
Last active December 7, 2025 14:10
Advent of Code 2025 day 7
#!/usr/bin/env raku
use v6.d;
$*OUT.out-buffer = False; # Autoflush
# Advent of Code 2025 day 7 -- https://adventofcode.com/2025/day/7
unit sub MAIN(IO() $inputfile where *.f = 'aoc07.input', Bool :v(:$verbose) = False);
my @lines = $inputfile.lines;
my $width = @lines[0].chars;
@mscha
mscha / aoc06
Last active December 6, 2025 14:03
Advent of Code 2025 day 6
#!/usr/bin/env raku
use v6.d;
$*OUT.out-buffer = False; # Autoflush
# Advent of Code 2025 day 6 -- https://adventofcode.com/2025/day/6
unit sub MAIN(IO() $inputfile where *.f = 'aoc06.input', Bool :v(:$verbose) = False);
# Apply the operator (+ or *) given as the last element to the remaining terms
sub calculate(@problem is copy) is nodal
@mscha
mscha / aoc05
Last active December 5, 2025 13:21
Advent of Code 2025 day 5
#!/usr/bin/env raku
use v6.d;
$*OUT.out-buffer = False; # Autoflush
# Advent of Code 2025 day 5 -- https://adventofcode.com/2025/day/5
unit sub MAIN(IO() $inputfile where *.f = 'aoc05.input', Bool :v($verbose) = False);
sub to-range(Str $s) { Range.new(|$s.comb(/\d+/)».Int) }
@mscha
mscha / aoc04
Last active December 4, 2025 11:11
Advent of Code 2025 day 4
#!/usr/bin/env raku
use v6.d;
$*OUT.out-buffer = False; # Autoflush
# Advent of Code 2025 day 4 -- https://adventofcode.com/2025/day/4
class PaperGrid
{
has Str $.map;
@mscha
mscha / aoc03
Last active December 3, 2025 11:52
Advent of Code 2025 day 3
#!/usr/bin/env raku
use v6.d;
$*OUT.out-buffer = False; # Autoflush
# Advent of Code 2025 day 3 -- https://adventofcode.com/2025/day/3
unit sub MAIN(IO() $inputfile where *.f = 'aoc03.input', Bool :v($verbose) = False);
sub joltage($bank, $count=2)
{
@mscha
mscha / aoc02
Last active December 2, 2025 23:04
Advent of Code 2025 day 2
#!/usr/bin/env raku
use v6.d;
$*OUT.out-buffer = False; # Autoflush
# Advent of Code 2025 day 2 -- https://adventofcode.com/2025/day/2
unit sub MAIN(IO() $inputfile where *.f = 'aoc02.input', Bool :v($verbose) = False);
# Find invalid IDs in a list of ranges
multi invalid-ids(Str $ranges, Bool :$simple = False)
@mscha
mscha / aoc01b
Created December 1, 2025 10:46
Advent of Code 2025 day 1 - efficient version
#!/usr/bin/env raku
use v6.d;
$*OUT.out-buffer = False; # Autoflush
# Advent of Code 2025 day 1 -- https://adventofcode.com/2025/day/1
class Safe
{
has Int $.modulo = 100;
has Int $.dial = $!modulo div 2;
@mscha
mscha / aoc01
Last active December 1, 2025 10:40
Advent of Code 2025 day 1
#!/usr/bin/env raku
use v6.d;
$*OUT.out-buffer = False; # Autoflush
# Advent of Code 2025 day 1 -- https://adventofcode.com/2025/day/1
class Safe
{
has Int $.modulo = 100;
has Int $.dial = $!modulo div 2;
#!/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;