$i = 0; $d = 0; $b = 0; $x = 1; while (! $solved) { if (is_increasing($x)) { $i++; } elsif (is_decreasing($x)) { $d++; } else { $b++; } print "At $x: " . ($b / $x) . "\n" if ($x == 21780); print "At $x: " . ($b / $x) . "\n" if ($x == 100); print "At $x: " . ($b / $x) . "\n" if ($x == 525); $solved = 1 if ($b / $x >= .99); $x++; } print ($x - 1) . "\n"; sub is_increasing { my ($n) = @_; $toreturn = 1; $lastnum = substr($n,0,1); for ($k = 1; $k < length($n); $k++) { if (substr($n,$k,1) < $lastnum) { $toreturn = 0; last; } $lastnum = substr($n,$k,1); } return $toreturn; } sub is_decreasing { my ($n) = @_; $toreturn = 1; $lastnum = substr($n,0,1); for ($k = 1; $k < length($n); $k++) { if (substr($n,$k,1) > $lastnum) { $toreturn = 0; last; } $lastnum = substr($n,$k,1); } return $toreturn; }