def hailstone( 1 ) = [1] hailstone( n ) = n # hailstone( if 2|n then n/2 else n*3 + 1 ) if _name_ == '-main-' h27 = hailstone( 27 ) assert( h27.length() == 112 and h27.startsWith([27, 82, 41, 124]) and h27.endsWith([8, 4, 2, 1]) ) val (n, len) = maxBy( snd, [(i, hailstone( i ).length()) | i <- 1:100000] ) println( n, len )