summaryrefslogtreecommitdiff
path: root/2024/03/raku.raku
blob: 38f040e5303aea0f7c257e0326403693d2371645 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/env raku

my $p = slurp;

sub p2 (($on, $tot), ($i, |n)) { 
	given $i {
		when "mul"   { return ($on , $tot + [*] $on, |n.list) }
		when "do"    { return (1   , $tot) }
		when "don't" { return (0   , $tot) }
	}
};

$p ~~ m:g/ mul\((\d ** 1..3)\,(\d ** 1..3)\) /;
say "silver: ", $/.map({ [*] $_.list }).sum;

$p ~~ m:g/ (mul)\((\d ** 1..3)\,(\d ** 1..3)\) | (do)\(\) | (don\'t)\(\) /;
say "gold: ", ([[&p2]] <1 0>, |$/)[1];