]> www.fi.muni.cz Git - aoc.git/commitdiff
Day 5: input properties assumptions
authorJan "Yenya" Kasprzak <kas@fi.muni.cz>
Thu, 5 Dec 2024 08:53:41 +0000 (09:53 +0100)
committerJan "Yenya" Kasprzak <kas@fi.muni.cz>
Thu, 5 Dec 2024 08:53:41 +0000 (09:53 +0100)
2024/09.pl [new file with mode: 0755]
2024/10.pl [new file with mode: 0755]

diff --git a/2024/09.pl b/2024/09.pl
new file mode 100755 (executable)
index 0000000..9107de6
--- /dev/null
@@ -0,0 +1,27 @@
+#!/usr/bin/perl -w
+
+use v5.40;
+
+my %rules;
+while (<>) {
+       chomp;
+       last if /^\s*$/;
+       my ($src, $dst) = /\d+/g;
+       $rules{$src}->{$dst}++;
+}
+
+my $sum;
+
+UPDATE:
+while (<>) {
+       chomp;
+       my @upd = /\d+/g;
+       for my ($i, $u1) (indexed @upd[0 .. $#upd-1]) {
+               for my ($j, $u2) (indexed @upd[$i+1 .. $#upd]) {
+                       next UPDATE if $rules{$u2}->{$u1};
+               }
+       }
+       $sum += $upd[@upd/2];
+}
+
+say $sum;
diff --git a/2024/10.pl b/2024/10.pl
new file mode 100755 (executable)
index 0000000..192084f
--- /dev/null
@@ -0,0 +1,29 @@
+#!/usr/bin/perl -w
+
+use v5.40;
+
+my %rules;
+while (<>) {
+       chomp;
+       last if /^\s*$/;
+       my ($src, $dst) = /\d+/g;
+       $rules{$src}{$dst}++;
+}
+
+my $sum;
+
+while (<>) {
+       chomp;
+       my @upd = /\d+/g;
+       for my ($i, $u1) (indexed @upd[0 .. $#upd-1]) {
+               for my ($j, $u2) (indexed @upd[$i+1 .. $#upd]) {
+                       goto INCORR if $rules{$u2}{$u1};
+               }
+       }
+       next;
+INCORR:
+       @upd = sort { $rules{$a}{$b} ? -1 : 1 } @upd;
+       $sum += $upd[@upd/2];
+}
+
+say $sum;