AoC day 4. This one is silly and horribly inefficient, but it was created from the part 1 solution by only adding a single line. (And the termination logic is cheeky.)
use v5.36;<br><br>my $grid = do { local $/; readline };<br>my $width = index($grid, "\n") + 1;<br><br>my $count = 0;<br>while ($grid =~ /\@/g) {<br> my $p = $-[0];<br> my $bad = 0;<br> for my $o (map +($_, -$_), 1, $width - 1, $width, $width + 1) {<br> my $q = $p + $o;<br> $bad++<br> if 0 <= $q < length($grid)<br> && substr($grid, $q, 1) eq '@';<br> }<br> if ($bad < 4) {<br> $count++;<br> substr $grid, $p, 1, '.';<br> }<br>}<br><br>say $count;<br>
#
AdventOfCode #
perl