X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=2022%2F29.pl;h=2b7128b98c265d7dee6471fdb430953696148c03;hb=f141c1ae1581135db4bc9f68aa677c7c499f4956;hp=71896f36bef98ab61d733ded8d502ebcad1935ac;hpb=354065185a5065f5c22bdd800f355686b4f0b86e;p=aoc.git diff --git a/2022/29.pl b/2022/29.pl index 71896f3..2b7128b 100755 --- a/2022/29.pl +++ b/2022/29.pl @@ -7,35 +7,29 @@ use experimental 'multidimensional'; my $row = 2000000; my @ints; - my %corr; while (<>) { my ($sx, $sy, $cx, $cy) = /(-?\d+)/g; my $r = abs($sx - $cx) + abs($sy - $cy); my $dist = abs($sy - $row); - say "dist =$dist"; - if ($dist < $r) { - my $l = abs($dist-$r); - push @ints, [ $sx - ($r - $dist), $sx + ($r - $dist) ]; - say "$ints[-1][0] $ints[-1][1]"; - $corr{$cx} = 1 if $cy == $row; - } + next if $dist >= $r; + + push @ints, [ $sx - ($r - $dist), $sx + ($r - $dist) ]; + $corr{$cx} = 1 if $cy == $row; } @ints = sort { $a->[0] <=> $b->[0] } @ints; -my $prev = shift @ints; -my $sum = $prev->[1] - $prev->[0] + 1; +my $sum = $ints[0][1] - $ints[0][0] + 1; +my $prev = (shift @ints)->[1]; for my $int (@ints) { - if ($int->[0] > $prev->[1]) { + if ($int->[0] > $prev) { $sum += $int->[1] - $int->[0] + 1; - $prev = $int; - } elsif ($int->[1] <= $prev->[1]) { - next; - } else { - $sum += $int->[1] - $prev->[1]; - $prev = $int; + $prev = $int->[1]; + } elsif ($int->[1] > $prev) { + $sum += $int->[1] - $prev; + $prev = $int->[1]; } }