From 7d6cd6ae6b15e82a5cc343426d680d581c755f28 Mon Sep 17 00:00:00 2001 From: "Jan \"Yenya\" Kasprzak" Date: Sun, 5 Dec 2021 06:24:11 +0100 Subject: [PATCH] Day 5: off-by-one errors everywhere --- 09.pl | 28 ++++++++++++++++++++++++++++ 10.pl | 23 +++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100755 09.pl create mode 100755 10.pl 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; + -- 2.43.0