Minor kotlinization :)
This commit is contained in:
parent
34c0c213c4
commit
778b38b3a4
@ -24,26 +24,22 @@ fun main() {
|
|||||||
return -1
|
return -1
|
||||||
}
|
}
|
||||||
|
|
||||||
fun rec(n: Long, i: Int): Long {
|
fun rec(n: Long, i: Int): Long =
|
||||||
//println("$i $n")
|
if (i == 0) 1 else lookupTable.getOrPut(n to i) {
|
||||||
if (i == 0) return 1
|
if (n == 0L) {
|
||||||
val ll = lookupTable[n to i]
|
rec(1L, i - 1)
|
||||||
if (ll != null) return ll
|
|
||||||
val result = if (n == 0L) {
|
|
||||||
rec(1L, i - 1)
|
|
||||||
} else {
|
|
||||||
val size = fastCeilLog10(n)
|
|
||||||
if (size and 1 == 0) {
|
|
||||||
val left = n / powTenTable[size / 2]
|
|
||||||
val right = n % powTenTable[size / 2]
|
|
||||||
rec(left, i - 1) + rec(right, i - 1)
|
|
||||||
} else {
|
} else {
|
||||||
rec(n * 2024L, i - 1)
|
val size = fastCeilLog10(n)
|
||||||
|
if (size and 1 == 0) {
|
||||||
|
val left = n / powTenTable[size / 2]
|
||||||
|
val right = n % powTenTable[size / 2]
|
||||||
|
rec(left, i - 1) + rec(right, i - 1)
|
||||||
|
} else {
|
||||||
|
rec(n * 2024L, i - 1)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
lookupTable[n to i] = result
|
|
||||||
return result
|
|
||||||
}
|
|
||||||
|
|
||||||
fun part1(input: List<String>): Long {
|
fun part1(input: List<String>): Long {
|
||||||
val numbers = input[0].splitLongs()
|
val numbers = input[0].splitLongs()
|
||||||
|
Loading…
Reference in New Issue
Block a user