]> www.fi.muni.cz Git - aoc.git/commitdiff
Day 06: unusual math
authorJan "Yenya" Kasprzak <kas@fi.muni.cz>
Sat, 6 Dec 2025 05:21:47 +0000 (06:21 +0100)
committerJan "Yenya" Kasprzak <kas@fi.muni.cz>
Sat, 6 Dec 2025 05:29:57 +0000 (06:29 +0100)
2025/11.pl [new file with mode: 0755]
2025/12.pl [new file with mode: 0755]

diff --git a/2025/11.pl b/2025/11.pl
new file mode 100755 (executable)
index 0000000..61233d6
--- /dev/null
@@ -0,0 +1,23 @@
+#!/usr/bin/perl -w
+
+use v5.42;
+use List::Util qw(sum);
+
+my @map = map { [ /\S+/g ] } <>;
+my $xmax = $#{ $map[0] };
+my $ymax = $#map;
+
+my @sums;
+
+for my $x (0 .. $xmax) {
+       $sums[$x] = $map[$ymax][$x] eq '+' ? 0 : 1;
+       for my $y (0 .. $ymax-1) {
+               if ($map[$ymax][$x] eq '+') {
+                       $sums[$x] += $map[$y][$x];
+               } else {
+                       $sums[$x] *= $map[$y][$x];
+               }
+       }
+}
+
+say sum @sums;
diff --git a/2025/12.pl b/2025/12.pl
new file mode 100755 (executable)
index 0000000..4e735fa
--- /dev/null
@@ -0,0 +1,26 @@
+#!/usr/bin/perl -w
+
+use v5.42;
+
+my @map = map { chomp; [ split // ] } <>;
+my $xmax = $#{ $map[0] };
+my $ymax = $#map;
+
+my ($sum, $imm, $op);
+
+for my $x (0 .. $xmax) {
+       if ($map[$ymax][$x] ne ' ') {
+               $op = $map[$ymax][$x];
+               $imm = $op eq '*';
+       }
+       my $expr = "\$imm $op= ";
+       $expr .= $map[$_][$x] for 0 .. $ymax-1;
+       if ($expr =~ /\d/) {
+               eval $expr;
+       } else {
+               $sum += $imm;
+       }
+}
+$sum += $imm;
+
+say $sum;