From 2b72f6bc41ccb5f8fa6edf765af9141b3224983a Mon Sep 17 00:00:00 2001 From: "Jan \"Yenya\" Kasprzak" Date: Thu, 11 Dec 2025 07:47:56 +0100 Subject: [PATCH] Day 11: dynamic programming --- 2025/21.pl | 15 +++++++++++++++ 2025/22.pl | 31 +++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100755 2025/21.pl create mode 100755 2025/22.pl 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}; -- 2.47.3