5 use experimental 'multidimensional';
10 my ($x, $y, $cx, $cy) = /(-?\d+)/g;
11 [ $x, $y, abs($x-$cx) + abs($y-$cy) ]
14 sub compute_row($row) {
18 my ($sx, $sy, $r) = @$_;
19 my $dist = abs($sy - $row);
22 my ($left, $right) = ($sx - ($r - $dist), $sx + ($r - $dist));
23 next if $right < 0 || $left > $max;
24 $left = 0 if $left < 0;
25 $right = $max if $right > $max;
26 push @ints, [$left, $right];
29 @ints = sort { $a->[0] <=> $b->[0] } @ints;
30 my $prev = (shift @ints)->[1];
33 next if $int->[1] <= $prev;
34 if ($int->[0] > $prev+1) {
35 say "at ", $prev+1, " $row: ",
36 4000000*($prev+1)+$row;
45 say "row $_" if $_ % 10_000 == 0;