From 773b37cfb0211a65d3a05bc60b7b70e79db5b881 Mon Sep 17 00:00:00 2001 From: Christian Segundo Date: Wed, 4 Dec 2024 10:27:58 +0100 Subject: add day 4 --- 4.pl | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 4.pl (limited to '4.pl') diff --git a/4.pl b/4.pl new file mode 100644 index 0000000..110708a --- /dev/null +++ b/4.pl @@ -0,0 +1,39 @@ +#!/usr/bin/env perl +open(my $fh, "4-input.txt") or die ; +while (<$fh>) { chomp; push @lines, [split //]; } +close($fh); + +my $xmas_count = 0; +my $mas_count = 0; + +for ($i = 0; $i < scalar @lines; $i++) { + my @line = @{ $lines[$i] }; + for($j=0; $j < scalar @line; $j++) { + if ($i+3 < scalar @lines) { + if ($j+3 < scalar @line and $line[$j] eq 'X' and $lines[$i+1][$j+1] eq 'M' and $lines[$i+2][$j+2] eq 'A' and $lines[$i+3][$j+3] eq 'S') { $xmas_count++; } + if ($j-3 >= 0 and $line[$j] eq 'X' and $lines[$i+1][$j-1] eq 'M' and $lines[$i+2][$j-2] eq 'A' and $lines[$i+3][$j-3] eq 'S') { $xmas_count++; } + if ($line[$j] eq 'X' and $lines[$i+1][$j] eq 'M' and $lines[$i+2][$j] eq 'A' and $lines[$i+3][$j] eq 'S') { $xmas_count++; } + } + + if ($i-3 >= 0) { + if ($j+3 < scalar @line and $line[$j] eq 'X' and $lines[$i-1][$j+1] eq 'M' and $lines[$i-2][$j+2] eq 'A' and $lines[$i-3][$j+3] eq 'S') { $xmas_count++; } + if ($j-3 >= 0 and $line[$j] eq 'X' and $lines[$i-1][$j-1] eq 'M' and $lines[$i-2][$j-2] eq 'A' and $lines[$i-3][$j-3] eq 'S') { $xmas_count++; } + if ($line[$j] eq 'X' and $lines[$i-1][$j] eq 'M' and $lines[$i-2][$j] eq 'A' and $lines[$i-3][$j] eq 'S') { $xmas_count++; } + } + + if ($j+3 < scalar @line and $line[$j] eq 'X' and $line[$j+1] eq 'M' and $line[$j+2] eq 'A' and $line[$j+3] eq 'S') { $xmas_count++; } + if ($j-3 >= 0 and $line[$j] eq 'X' and $line[$j-1] eq 'M' and $line[$j-2] eq 'A' and $line[$j-3] eq 'S') { $xmas_count++; } + + if ($line[$j] eq 'A' and $i-1>=0 and $j-1>=0 and $i+1 1) { $mas_count++; } + } + } +} + +print "puzzle 1: $xmas_count\n"; +print "puzzle 2: $mas_count\n"; -- cgit v1.2.3