use strict; use warnings; my (@times, @dists); while (<>) { chomp; @times = split(/ +/) if s/^Time: +//; @dists = split(/ +/) if s/^Distance: +//; } sub wins { my ($time, $dist) = @_; my $wins = 0; for my $hold (1 .. $time - 1) { my $travel = $hold * ($time - $hold); $wins++ if $travel > $dist; } $wins; } my $ways = 1; for (my $race = 0; $race < scalar(@times); $race++) { $ways *= wins($times[$race], $dists[$race]); } print $ways, "\n"; print wins(int(join("", @times)), int(join("", @dists))), "\n";