]> www.fi.muni.cz Git - aoc.git/blob - 2022/15.pl
Day 25: examining the input
[aoc.git] / 2022 / 15.pl
1 #!/usr/bin/perl -w
2
3 use v5.36;
4 use strict;
5 use experimental 'multidimensional';
6 use List::Util qw(none);
7
8 my @m = map { chomp; [ split // ] } <>;
9 my $xmax = @{ $m[0] };
10 my $ymax = @m;
11
12 my $count;
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] } @_; };
16         $count++
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)
21                 ;
22 } }
23
24 say $count + 2*$xmax + 2*$ymax - 4;