From: Jan "Yenya" Kasprzak <kas@fi.muni.cz>
Date: Sun, 5 Dec 2021 05:24:11 +0000 (+0100)
Subject: Day 5: off-by-one errors everywhere
X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=commitdiff_plain;h=7d6cd6ae6b15e82a5cc343426d680d581c755f28;p=aoc2021.git

Day 5: off-by-one errors everywhere
---

diff --git a/09.pl b/09.pl
new file mode 100755
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
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;
+