5 use experimental 'multidimensional';
12 sub compute_row($row) {
17 my ($sx, $sy, $cx, $cy) = /(-?\d+)/g;
18 my $r = abs($sx - $cx) + abs($sy - $cy);
19 my $dist = abs($sy - $row);
22 my ($l, $r) = ($sx - ($r - $dist), $sx + ($r - $dist));
23 next if $r < 0 || $l > $max;
25 $r = $max if $r > $max;
27 # say "$ints[-1][0] $ints[-1][1]";
28 $corr{$cx} = 1 if $cy == $row;
32 @ints = sort { $a->[0] <=> $b->[0] } @ints;
33 my $prev = shift @ints;
38 my $sum = $prev->[1] - $prev->[0] + 1;
41 if ($int->[0] < $max && $int->[0] > $prev->[1]+1) {
42 say "at ", $prev->[1]+1, " $row: ", 4000000*($prev->[1]+1)+$row;
44 } elsif ($int->[1] <= $prev->[1]) {
49 last if $prev->[1] > $max;
55 say "row $_" if $_ % 1000 == 0;