Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
43
Task/Fusc-sequence/Kotlin/fusc-sequence.kotlin
Normal file
43
Task/Fusc-sequence/Kotlin/fusc-sequence.kotlin
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
// Version 1.3.21
|
||||
|
||||
fun fusc(n: Int): IntArray {
|
||||
if (n <= 0) return intArrayOf()
|
||||
if (n == 1) return intArrayOf(0)
|
||||
val res = IntArray(n)
|
||||
res[1] = 1
|
||||
for (i in 2 until n) {
|
||||
if (i % 2 == 0) {
|
||||
res[i] = res[i / 2]
|
||||
} else {
|
||||
res[i] = res[(i - 1) / 2] + res[(i + 1) / 2]
|
||||
}
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
||||
fun fuscMaxLen(n: Int): List<Pair<Int, Int>> {
|
||||
var maxLen = -1
|
||||
var maxFusc = -1
|
||||
val f = fusc(n)
|
||||
val res = mutableListOf<Pair<Int, Int>>()
|
||||
for (i in 0 until n) {
|
||||
if (f[i] <= maxFusc) continue // avoid string conversion
|
||||
maxFusc = f[i]
|
||||
val len = f[i].toString().length
|
||||
if (len > maxLen) {
|
||||
res.add(Pair(i, f[i]))
|
||||
maxLen = len
|
||||
}
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
||||
fun main() {
|
||||
println("The first 61 fusc numbers are:")
|
||||
println(fusc(61).asList())
|
||||
println("\nThe fusc numbers whose length > any previous fusc number length are:")
|
||||
val res = fuscMaxLen(20_000_000) // examine first 20 million numbers say
|
||||
for (r in res) {
|
||||
System.out.printf("%,7d (index %,10d)\n", r.second, r.first)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue