]> www.fi.muni.cz Git - aoc.git/commitdiff
Day 07: beams
authorJan "Yenya" Kasprzak <kas@fi.muni.cz>
Sun, 7 Dec 2025 05:18:05 +0000 (06:18 +0100)
committerJan "Yenya" Kasprzak <kas@fi.muni.cz>
Sun, 7 Dec 2025 05:18:05 +0000 (06:18 +0100)
2025/13.pl [new file with mode: 0755]
2025/14.pl [new file with mode: 0755]

diff --git a/2025/13.pl b/2025/13.pl
new file mode 100755 (executable)
index 0000000..615836c
--- /dev/null
@@ -0,0 +1,23 @@
+#!/usr/bin/perl -w
+
+use v5.42;
+
+my %beams;
+($_ = <>) =~ /S/g;
+$beams{pos()-1}++;
+
+my $splits;
+while (<>) {
+       my %newb;
+       for my $b (keys %beams) {
+               if (substr($_, $b, 1) eq '^') {
+                       $newb{$b-1}++ if $b > 0;
+                       $newb{$b+1}++ if $b < length;
+                       $splits++;
+               } else {
+                       $newb{$b}++;
+               }
+       }
+       %beams = %newb;
+}
+say $splits;
diff --git a/2025/14.pl b/2025/14.pl
new file mode 100755 (executable)
index 0000000..7648cb4
--- /dev/null
@@ -0,0 +1,22 @@
+#!/usr/bin/perl -w
+
+use v5.42;
+use List::Util qw(sum);
+
+my %beams;
+($_ = <>) =~ /S/g;
+$beams{pos()-1}++;
+
+while (<>) {
+       my %newb;
+       for my $b (keys %beams) {
+               if (substr($_, $b, 1) eq '^') {
+                       $newb{$b-1} += $beams{$b} if $b > 0;
+                       $newb{$b+1} += $beams{$b} if $b < length;
+               } else {
+                       $newb{$b} += $beams{$b};
+               }
+       }
+       %beams = %newb;
+}
+say sum values %beams;