]> www.fi.muni.cz Git - aoc.git/blob - 2022/29.pl
Day 25: examining the input
[aoc.git] / 2022 / 29.pl
1 #!/usr/bin/perl -w
2
3 use v5.36;
4 use strict;
5 use experimental 'multidimensional';
6
7 my $row = 2000000;
8
9 my @ints;
10 my %corr;
11
12 while (<>) {
13         my ($sx, $sy, $cx, $cy) = /(-?\d+)/g;
14         my $r = abs($sx - $cx) + abs($sy - $cy);
15         my $dist = abs($sy - $row);
16         next if $dist >= $r;
17
18         push @ints, [ $sx - ($r - $dist), $sx + ($r - $dist) ];
19         $corr{$cx} = 1 if $cy == $row;
20 }
21
22 @ints = sort { $a->[0] <=> $b->[0] } @ints;
23 my $sum = $ints[0][1] - $ints[0][0] + 1;
24 my $prev = (shift @ints)->[1];
25
26 for my $int (@ints) {
27         if ($int->[0] > $prev) {
28                 $sum += $int->[1] - $int->[0] + 1;
29                 $prev = $int->[1];
30         } elsif ($int->[1] > $prev) {
31                 $sum += $int->[1] - $prev;
32                 $prev = $int->[1];
33         }
34 }
35
36 say $sum - keys %corr;
37                 
38