From e54779aeaa1a4694c5903f31dc74863013fe861d Mon Sep 17 00:00:00 2001
From: "Jan \"Yenya\" Kasprzak" <kas@fi.muni.cz>
Date: Wed, 4 Dec 2024 12:28:07 +0100
Subject: [PATCH] Day 4: nested loops, too slow to write

---
 2024/07.pl | 29 +++++++++++++++++++++++++++++
 2024/08.pl | 35 +++++++++++++++++++++++++++++++++++
 2 files changed, 64 insertions(+)
 create mode 100755 2024/07.pl
 create mode 100755 2024/08.pl

diff --git a/2024/07.pl b/2024/07.pl
new file mode 100755
index 0000000..a66adb6
--- /dev/null
+++ b/2024/07.pl
@@ -0,0 +1,29 @@
+#!/usr/bin/perl -w
+
+use v5.40;
+
+my @map = map { chomp; [ split // ] } <>;
+my $xmax = $#{ $map[0] };
+my $ymax = $#map;
+
+my $count;
+for my $y (0 .. $ymax) {
+	for my $x (0 .. $xmax) {
+		for my $dx (-1 .. 1) {
+			DIR:
+			for my $dy (-1 .. 1) {
+				next if $dx == 0 && $dy == 0;
+				for my $off (0 .. 3) {
+					my ($x1, $y1) = ($x + $dx*$off, $y + $dy*$off);
+					next DIR if $x1 < 0 || $x1 > $xmax;
+					next DIR if $y1 < 0 || $y1 > $ymax;
+					next DIR if $map[$y1][$x1] ne qw(X M A S)[$off];
+				} 
+				$count++;
+			}
+		}
+	}
+}
+
+say $count;
+
diff --git a/2024/08.pl b/2024/08.pl
new file mode 100755
index 0000000..0291c6d
--- /dev/null
+++ b/2024/08.pl
@@ -0,0 +1,35 @@
+#!/usr/bin/perl -w
+
+use v5.40;
+
+my @map = map { chomp; [ split // ] } <>;
+my $xmax = $#{ $map[0] };
+my $ymax = $#map;
+
+my $count;
+for my $y (0 .. $ymax) {
+	for my $x (0 .. $xmax) {
+		for my $dx1 (-1 .. 1) {
+			for my $dy1 (-1 .. 1) {
+				next if $dx1 == 0 || $dy1 == 0;
+				DIR:
+				for my ($dx2, $dy2) ($dy1, -$dx1, -$dy1, $dx1) {
+					for my $off (-1 .. 1) {
+						my ($x1, $y1) = ($x + $dx1*$off, $y + $dy1*$off);
+						my ($x2, $y2) = ($x + $dx2*$off, $y + $dy2*$off);
+						next DIR if $x1 < 0 || $x1 > $xmax;
+						next DIR if $y1 < 0 || $y1 > $ymax;
+						next DIR if $x2 < 0 || $x2 > $xmax;
+						next DIR if $y2 < 0 || $y2 > $ymax;
+						next DIR if $map[$y1][$x1] ne qw(M A S)[$off+1];
+						next DIR if $map[$y2][$x2] ne qw(M A S)[$off+1];
+					}
+					$count++;
+				}
+			}
+		}
+	}
+}
+
+say $count/2;
+
-- 
2.43.5