]> www.fi.muni.cz Git - aoc.git/blob - 2015/35.pl
Day 25: examining the input
[aoc.git] / 2015 / 35.pl
1 #!/usr/bin/perl -w
2
3 use v5.16;
4 use strict;
5
6 my @m = map { chomp; [ split // ] } <>;
7
8 for (1 .. 100) {
9         my @nm;
10         for my $y (0 .. 99) {
11         for my $x (0 .. 99) {
12                 my $sum = 0;
13                 for my $dy (-1 .. 1) {
14                         next if $y + $dy < 0 || $y + $dy > 99;
15                         for my $dx (-1 .. 1) {
16                                 next if $x + $dx < 0 || $x + $dx > 99;
17                                 next if $dx == 0 && $dy == 0;
18                                 $sum++ if $m[$y+$dy][$x+$dx] eq '#';
19                         }
20                 }
21                 if ($m[$y][$x] eq '#') {
22                         $nm[$y][$x] = $sum == 2 || $sum == 3 ? '#' : '.';
23                 } else {
24                         $nm[$y][$x] = $sum == 3 ? '#' : '.';
25                 }
26         } }
27         @m = @nm;
28 }
29
30 my $sum;
31 for my $y (0 .. 99) {
32 for my $x (0 .. 99) {
33         $sum++ if $m[$y][$x] eq '#';
34 } }
35
36 say $sum;