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