From: Jan "Yenya" Kasprzak Date: Thu, 11 Dec 2025 06:47:56 +0000 (+0100) Subject: Day 11: dynamic programming X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=commitdiff_plain;h=2b72f6bc41ccb5f8fa6edf765af9141b3224983a;p=aoc.git Day 11: dynamic programming --- diff --git a/2025/21.pl b/2025/21.pl new file mode 100755 index 0000000..f965ab3 --- /dev/null +++ b/2025/21.pl @@ -0,0 +1,15 @@ +#!/usr/bin/perl -w + +use v5.42; + +my %g = map { my @x = /\w+/g; shift(@x) => [ @x ] } <>; +my $sum; +my @q = 'you'; +while (my $p = shift @q) { + if ($p eq 'out') { + $sum++; + next; + } + push @q, $_ for $g{$p}->@*; +} +say $sum; diff --git a/2025/22.pl b/2025/22.pl new file mode 100755 index 0000000..5b7c191 --- /dev/null +++ b/2025/22.pl @@ -0,0 +1,31 @@ +#!/usr/bin/perl -w + +use v5.42; + +my %g = map { my @x = /\w+/g; shift(@x) => [ @x ] } <>; + +my @paths; +for my $node (keys %g) { + $paths[0]{$node}{$_} = 1 for $g{$node}->@*; +} + +for my $i (1 .. keys %g) { + for my $node (keys %g) { + for my $next ($g{$node}->@*) { + $paths[$i]{$node}{$_} += $paths[$i-1]{$next}{$_} + for keys $paths[$i-1]{$next}->%*; + } + } +} + +my %all; +for my $p (@paths) { + for my $node (keys %$p) { + $all{$node}{$_} += $p->{$node}{$_} + for keys $p->{$node}->%*; + } +} + +no warnings 'uninitialized'; # only one direction between dac and fft exists +say $all{svr}{fft} * $all{fft}{dac} * $all{dac}{out} + + $all{svr}{dac} * $all{dac}{fft} * $all{fft}{out};