]> www.fi.muni.cz Git - aoc.git/commitdiff
Day 11: recursive solution
authorJan "Yenya" Kasprzak <kas@fi.muni.cz>
Thu, 11 Dec 2025 09:26:18 +0000 (10:26 +0100)
committerJan "Yenya" Kasprzak <kas@fi.muni.cz>
Thu, 11 Dec 2025 09:50:31 +0000 (10:50 +0100)
2025/22alt.pl [new file with mode: 0755]

diff --git a/2025/22alt.pl b/2025/22alt.pl
new file mode 100755 (executable)
index 0000000..1ee1b3d
--- /dev/null
@@ -0,0 +1,16 @@
+#!/usr/bin/perl -w
+
+use v5.42;
+
+my %g = map { my ($n, @x) = /\w+/g; $n => \@x } <>;
+
+sub walk($node, $goal, $seen = {}) {
+       return 1 if $node eq $goal;
+       return $seen->{$node} if defined $seen->{$node};
+       $seen->{$node} += walk($_ => $goal, $seen)
+               for $g{$node}->@*;
+       return $seen->{$node} //= 0;
+}
+
+say walk('svr' => 'fft') * walk('fft' => 'dac') * walk('dac' => 'out')
+  + walk('svr' => 'dac') * walk('dac' => 'fft') * walk('fft' => 'out');