5 my @stones = map { chomp; [ /-?\d+/g ] } <>;
6 my ($min, $max) = (200000000000000, 400000000000000);
7 # my ($min, $max) = (7, 27);
10 my ($x0, $y0, $z0, $xs, $ys, $zs) = @_;
11 return ($ys/$xs, $y0-($ys*$x0/$xs));
15 my ($x, $xs, $x0) = @_;
20 for my $s1 (0 .. $#stones-1) {
21 my @st1 = @{ $stones[$s1] };
22 my ($a, $b) = from_param(@st1);
25 for my $s2 ($s1+1 .. $#stones) {
26 my @st2 = @{ $stones[$s2] };
27 my ($c, $d) = from_param(@st2);
35 my $xi = ($d-$b)/($a-$c);
37 my $t0 = to_time($xi, $st1[3], $st1[0]);
38 my $t1 = to_time($xi, $st2[3], $st2[0]);
39 say " intersection at $xi, $yi at $t0 $t1";
40 if ($xi < $min || $xi > $max || $yi < $min || $yi > $max) {
44 if ($t0 < 0 || $t1 < 0) {