]> www.fi.muni.cz Git - aoc.git/blob - 2023/22.pl
Day 25: examining the input
[aoc.git] / 2023 / 22.pl
1 #!/usr/bin/perl -w
2
3 use v5.38;
4
5 my @gxys;
6 my $y = 0;
7 while (<>) {
8         while (/#/g) {
9                 my $x = pos()-1;
10                 push @gxys, [ $x, $y ];
11         }
12         $y++;
13 }
14
15 my %x_gxy = map { $_->[0] => 1 } @gxys;
16 my %y_gxy = map { $_->[1] => 1 } @gxys;
17
18 my $steps;
19 for my $i (0 .. $#gxys-1) {
20         for my $j ($i .. $#gxys) {
21                 my ($x1, $y1) = $gxys[$i]->@*;
22                 my ($x2, $y2) = $gxys[$j]->@*;
23
24                 ($x1, $x2) = ($x2, $x1) if $x1 > $x2;
25                 for ($x1+1 .. $x2) {
26                         $steps += $x_gxy{$_} ? 1 : 1_000_000;
27                 }
28
29                 ($y1, $y2) = ($y2, $y1) if $y1 > $y2;
30                 for ($y1+1 .. $y2) {
31                         $steps += $y_gxy{$_} ? 1 : 1_000_000;
32                 }
33         }
34 }
35
36 say $steps;