]> www.fi.muni.cz Git - aoc.git/blobdiff - 2022/41.pl
Day 21: first ugly eval-based working solution
[aoc.git] / 2022 / 41.pl
diff --git a/2022/41.pl b/2022/41.pl
new file mode 100755 (executable)
index 0000000..0603f02
--- /dev/null
@@ -0,0 +1,31 @@
+#!/usr/bin/perl -w
+
+use v5.36;
+use strict;
+
+my %names;
+my %vals;
+while (<>) {
+       chomp;
+       my ($name, $rest) = split /:/;
+       $names{$name} = $rest;
+       $vals{$name} = 0+$rest if $rest =~ /\A\s*\d+\z/;
+}
+
+while (!defined $vals{root}) {
+       for my $n (keys %names) {
+               next if defined $vals{$n};
+               my $e = $names{$n};
+               my $d = 1;
+               for my $v (keys %vals) {
+                       $e =~ s/$v/$vals{$v}/g;
+               }
+               next if $e =~ /[a-z]/;
+               say "eval $e";
+               eval "\$vals{$n} = $e";
+               say "set \$vals{$n} to $vals{$n}" unless $@;
+       }
+       say " ================= ";
+}
+
+say $vals{root};