17 lines
534 B
Kotlin
17 lines
534 B
Kotlin
fun hailstone(start: Int) = generateSequence(start) { n ->
|
|
when {
|
|
n == 1 -> null
|
|
n % 2 == 0 -> n / 2
|
|
else -> n * 3 + 1
|
|
}
|
|
}
|
|
|
|
fun main() {
|
|
val hail27 = hailstone(27).toList()
|
|
println("The hailstone sequence for 27 has ${hail27.size} elements:\n$hail27")
|
|
|
|
val (n, length) = (1..100000).asSequence()
|
|
.map { it to hailstone(it).count() }
|
|
.maxBy { it.second }
|
|
println("The number between 1 and 100000 with the longest hailstone sequence is $n, of length $length")
|
|
}
|