From d9af65a51b9e28b0bef4a113b3983a6cf30f7e46 Mon Sep 17 00:00:00 2001 From: "Jan \"Yenya\" Kasprzak" Date: Sat, 6 Dec 2025 06:21:47 +0100 Subject: [PATCH] Day 06: unusual math --- 2025/11.pl | 23 +++++++++++++++++++++++ 2025/12.pl | 26 ++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100755 2025/11.pl create mode 100755 2025/12.pl diff --git a/2025/11.pl b/2025/11.pl new file mode 100755 index 0000000..61233d6 --- /dev/null +++ b/2025/11.pl @@ -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 index 0000000..4e735fa --- /dev/null +++ b/2025/12.pl @@ -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; -- 2.47.3