]> www.fi.muni.cz Git - aoc2021.git/commitdiff
Day 5: off-by-one errors everywhere
authorJan "Yenya" Kasprzak <kas@fi.muni.cz>
Sun, 5 Dec 2021 05:24:11 +0000 (06:24 +0100)
committerJan "Yenya" Kasprzak <kas@fi.muni.cz>
Sun, 5 Dec 2021 05:24:11 +0000 (06:24 +0100)
09.pl [new file with mode: 0755]
10.pl [new file with mode: 0755]

diff --git a/09.pl b/09.pl
new file mode 100755 (executable)
index 0000000..11d9003
--- /dev/null
+++ b/09.pl
@@ -0,0 +1,28 @@
+#!/usr/bin/perl -w
+
+use v5.16;
+
+my $p;
+my $count;
+while (<>) {
+       my ($x1, $y1, $x2, $y2) = /(\d+),(\d+) -> (\d+),(\d+)/;
+       next if $x1 != $x2 && $y1 != $y2;
+       if ($x1 != $x2) {
+               if ($x1 > $x2) {
+                       ($x1, $x2) = ($x2, $x1);
+               }
+               for my $x ($x1 .. $x2) {
+                       $count++ if ++$p->{$x}->{$y1} == 2;
+               }
+       } else {
+               if ($y1 > $y2) {
+                       ($y1, $y2) = ($y2, $y1);
+               }
+               for my $y ($y1 .. $y2) {
+                       $count++ if ++$p->{$x1}->{$y} == 2;
+               }
+       }
+}
+
+say $count;
+
diff --git a/10.pl b/10.pl
new file mode 100755 (executable)
index 0000000..908bfd6
--- /dev/null
+++ b/10.pl
@@ -0,0 +1,23 @@
+#!/usr/bin/perl -w
+
+use v5.16;
+
+my $p;
+my $count;
+while (<>) {
+       my ($x1, $y1, $x2, $y2) = /(\d+),(\d+) -> (\d+),(\d+)/;
+       # say "   $x1, $y1 -> $x2, $y2";
+       my $xi = $x2 > $x1 ? 1 : $x2 == $x1 ? 0 : -1;
+       my $yi = $y2 > $y1 ? 1 : $y2 == $y1 ? 0 : -1;
+       # say "   $xi, $yi";
+       
+       my ($x, $y) = ($x1, $y1);
+       do {
+               # say "$x, $y";
+               $count++ if ++$p->{$x}->{$y} == 2;
+               $x += $xi; $y += $yi;
+       } while ($x != $x2+$xi || $y != $y2+$yi);
+}
+
+say $count;
+