diff options
author | Christian Segundo | 2024-12-04 10:27:58 +0100 |
---|---|---|
committer | Christian Segundo | 2024-12-04 10:27:58 +0100 |
commit | 773b37cfb0211a65d3a05bc60b7b70e79db5b881 (patch) | |
tree | 786cd12576ec9090fced52329db11b149a6eed5b /4.pl | |
parent | db0a75e3c4f7f9f4cff7f74ec781276cdfee4dde (diff) | |
download | advent-of-code-2024-773b37cfb0211a65d3a05bc60b7b70e79db5b881.tar.gz |
add day 4
Diffstat (limited to '4.pl')
-rw-r--r-- | 4.pl | 39 |
1 files changed, 39 insertions, 0 deletions
@@ -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<scalar @lines and $j+1 <scalar @line) { + $k = 0; + if ($lines[$i-1][$j-1] eq 'M' and $lines[$i+1][$j+1] eq 'S') { $k++; } + if ($lines[$i-1][$j+1] eq 'M' and $lines[$i+1][$j-1] eq 'S') { $k++; } + if ($lines[$i+1][$j-1] eq 'M' and $lines[$i-1][$j+1] eq 'S') { $k++; } + if ($lines[$i+1][$j+1] eq 'M' and $lines[$i-1][$j-1] eq 'S') { $k++; } + if ($k > 1) { $mas_count++; } + } + } +} + +print "puzzle 1: $xmas_count\n"; +print "puzzle 2: $mas_count\n"; |