5 my @map = map { chomp; [ split // ] } <>;
10 say "After ", ++$min, ":";
15 for my ($dx, $dy) (1, 0, 0, 1, -1, 0, 0, -1) {
18 next if $nx < 0 || $nx > 4 || $ny < 0 || $ny > 4;
19 $sum++ if $map[$ny][$nx] eq '#';
21 # say "at $x $y neigbors $sum";
22 if ($map[$y][$x] eq '#') {
23 $nm[$y][$x] = $sum == 1 ? '#' : '.';
25 $nm[$y][$x] = $sum == 1 || $sum == 2 ? '#' : '.';
32 my $key = join('', map { join('', @$_) } @map);
34 say "this one was last seen at min $seen{$key}";