]> www.fi.muni.cz Git - aoc.git/commitdiff
Day 22: walls of incomprehensible text
authorJan "Yenya" Kasprzak <kas@fi.muni.cz>
Sun, 22 Dec 2024 05:29:27 +0000 (06:29 +0100)
committerJan "Yenya" Kasprzak <kas@fi.muni.cz>
Sun, 22 Dec 2024 05:29:27 +0000 (06:29 +0100)
2024/43.pl [new file with mode: 0755]
2024/44.pl [new file with mode: 0755]

diff --git a/2024/43.pl b/2024/43.pl
new file mode 100755 (executable)
index 0000000..477ea8c
--- /dev/null
@@ -0,0 +1,19 @@
+#!/usr/bin/perl -w
+
+use v5.40;
+
+my $sum;
+while (<>) {
+       chomp;
+       my $n=$_;
+       for (1 .. 2000) {
+               $n ^= $n << 6;
+               $n &= (1 << 24) - 1;
+               $n ^= $n >> 5;
+               $n &= (1 << 24) - 1;
+               $n ^= $n << 11;
+               $n &= (1 << 24) - 1;
+       }
+       $sum += $n;
+}
+say $sum;
diff --git a/2024/44.pl b/2024/44.pl
new file mode 100755 (executable)
index 0000000..3d7faa3
--- /dev/null
@@ -0,0 +1,37 @@
+#!/usr/bin/perl -w
+
+use v5.40;
+use List::Util qw(max);
+
+my %segs;
+while (<>) {
+       chomp;
+       my $n=$_;
+       my $prev = $n;
+       my %seen;
+       my @seq;
+       for (1 .. 2000) {
+               $n ^= $n << 6;
+               $n &= (1 << 24) - 1;
+               $n ^= $n >> 5;
+               $n &= (1 << 24) - 1;
+               $n ^= $n << 11;
+               $n &= (1 << 24) - 1;
+               my $p = $n % 10;
+               if (defined $prev) {
+                       push @seq, $p - $prev;
+                       shift @seq if @seq > 4;
+                       if (@seq == 4) {
+                               my $k = join(',', @seq);
+                               $seen{$k} //= $p;
+                       }
+               }
+               $prev = $p;
+       }
+       for my $k (keys %seen) {
+               $segs{$k} += $seen{$k};
+       }
+}
+say max values %segs;
+
+# BEGIN { t; }