5 my @m = map { chomp; [ split // ] } <>;
12 next if ++$m[$y][$x] < 10;
16 while (my $p = shift @q) {
19 for my $dx (-1 .. 1) {
20 for my $dy (-1 .. 1) {
21 my ($x2, $y2) = ($x+$dx, $y+$dy);
22 next if $x2 < 0 || $x2 > 9;
23 next if $y2 < 0 || $y2 > 9;
25 next if ++$m[$y2][$x2] < 10;
31 my ($x, $y) = split /$;/, $p;
34 say "Step $step flashes ", scalar keys %f;
35 say join("\n", map { join('', @$_) } @m);
37 last if keys %f == 100;