]> www.fi.muni.cz Git - aoc.git/commitdiff
Day 19: regex for part1, cached recursion for part 2
authorJan "Yenya" Kasprzak <kas@fi.muni.cz>
Thu, 19 Dec 2024 07:19:25 +0000 (08:19 +0100)
committerJan "Yenya" Kasprzak <kas@fi.muni.cz>
Thu, 19 Dec 2024 07:19:25 +0000 (08:19 +0100)
2024/37.pl [new file with mode: 0755]
2024/38.pl [new file with mode: 0755]

diff --git a/2024/37.pl b/2024/37.pl
new file mode 100755 (executable)
index 0000000..420dbd7
--- /dev/null
@@ -0,0 +1,10 @@
+#!/usr/bin/perl -w
+
+use v5.40;
+
+chomp($_ = <>);
+my $re = s/, /|/gr;
+my $sum;
+$sum += /^($re)+$/ while <>;
+say $sum;
+
diff --git a/2024/38.pl b/2024/38.pl
new file mode 100755 (executable)
index 0000000..f79a572
--- /dev/null
@@ -0,0 +1,26 @@
+#!/usr/bin/perl -w
+
+use v5.40;
+
+my @towels = <> =~ /\w+/g;
+$_ = <>;
+
+my %seen;
+sub walk($rest) {
+       return 1 if !$rest;
+       return $seen{$rest} if exists $seen{$rest};
+       my $count = 0;
+       for my $t (@towels) {
+               next if (my $r1 = $rest) !~ s/^$t//;
+               $count += walk($r1);
+       }
+       return $seen{$rest} = $count;
+}
+
+my $sum;
+while (<>) {
+       chomp;
+       $sum += walk($_);
+}
+say $sum;
+