]> www.fi.muni.cz Git - aoc.git/commitdiff
Day 9: interesting task
authorJan "Yenya" Kasprzak <kas@fi.muni.cz>
Sat, 9 Dec 2023 05:27:27 +0000 (06:27 +0100)
committerJan "Yenya" Kasprzak <kas@fi.muni.cz>
Sat, 9 Dec 2023 05:27:27 +0000 (06:27 +0100)
2023/17.pl [new file with mode: 0755]
2023/18.pl [new file with mode: 0755]

diff --git a/2023/17.pl b/2023/17.pl
new file mode 100755 (executable)
index 0000000..ab77a83
--- /dev/null
@@ -0,0 +1,20 @@
+#!/usr/bin/perl -w
+
+use v5.38;
+use List::Util qw(sum);
+
+my $sum;
+while (<>) {
+       my @seq = /-?\d+/g;
+       my @rest;
+       while (grep $_, @seq) {
+               for my $i (0 .. $#seq-1) {
+                       $seq[$i] = $seq[$i+1]-$seq[$i];
+               }
+               push @rest, pop @seq;
+       }
+       $sum += sum @rest;
+}
+
+say $sum;
+
diff --git a/2023/18.pl b/2023/18.pl
new file mode 100755 (executable)
index 0000000..f41b7b1
--- /dev/null
@@ -0,0 +1,24 @@
+#!/usr/bin/perl -w
+
+use v5.38;
+
+my $sum;
+while (<>) {
+       my @seq = /-?\d+/g;
+       my @rest;
+       while (grep $_, @seq) {
+               push @rest, $seq[0];
+               for my $i (0 .. $#seq-1) {
+                       $seq[$i] = $seq[$i+1]-$seq[$i];
+               }
+               pop @seq;
+       }
+       my $s = 0;
+       for (reverse @rest) {
+               $s = $_ - $s;
+       }
+       $sum += $s;
+}
+
+say $sum;
+