summaryrefslogtreecommitdiff
path: root/4.pl
diff options
context:
space:
mode:
Diffstat (limited to '4.pl')
-rw-r--r--4.pl39
1 files changed, 39 insertions, 0 deletions
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<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";