]> www.fi.muni.cz Git - aoc.git/blob - 2022/29.pl
Day 15: first ugly naive working solution
[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
11 my %corr;
12
13 while (<>) {
14         my ($sx, $sy, $cx, $cy) = /(-?\d+)/g;
15         my $r = abs($sx - $cx) + abs($sy - $cy);
16         my $dist = abs($sy - $row);
17         say "dist =$dist";
18         if ($dist < $r) {
19                 my $l = abs($dist-$r);
20                 push @ints, [ $sx - ($r - $dist), $sx + ($r - $dist) ];
21                 say "$ints[-1][0] $ints[-1][1]";
22                 $corr{$cx} = 1 if $cy == $row;
23         }
24 }
25
26 @ints = sort { $a->[0] <=> $b->[0] } @ints;
27 my $prev = shift @ints;
28 my $sum = $prev->[1] - $prev->[0] + 1;
29
30 for my $int (@ints) {
31         if ($int->[0] > $prev->[1]) {
32                 $sum += $int->[1] - $int->[0] + 1;
33                 $prev = $int;
34         } elsif ($int->[1] <= $prev->[1]) {
35                 next;
36         } else {
37                 $sum += $int->[1] - $prev->[1];
38                 $prev = $int;
39         }
40 }
41
42 say $sum - keys %corr;
43                 
44