5 use experimental 'multidimensional';
6 use List::Util qw(none);
8 my @m = map { chomp; [ split // ] } <>;
13 for my $y (1 .. $ymax-2) {
14 for my $x (1 .. $xmax-2) {
15 my $visible = sub { none { $m[$_->[1]][$_->[0]] >= $m[$y][$x] } @_; };
17 if $visible->( map { [ $_, $y ] } 0 .. $x-1 )
18 || $visible->( map { [ $_, $y ] } $x+1 .. $xmax-1)
19 || $visible->( map { [ $x, $_ ] } 0 .. $y-1)
20 || $visible->( map { [ $x, $_ ] } $y+1 .. $ymax-1)
24 say $count + 2*$xmax + 2*$ymax - 4;