-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDay20.kt
More file actions
21 lines (17 loc) 路 734 Bytes
/
Copy pathDay20.kt
File metadata and controls
21 lines (17 loc) 路 734 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private fun decrypt(originalNumbers: List<Long>, iterations: Int): Long {
val numbers = originalNumbers.asSequence().withIndex().toMutableList()
repeat(iterations) {
repeat(numbers.size) { i ->
val index = numbers.indexOfFirst { it.index == i }
val (_, number) = numbers.removeAt(index)
numbers.add((index + number) within numbers.size, IndexedValue(i, number))
}
}
val zeroIndex = numbers.indexOfFirst { it.value == 0L }
return sequenceOf(1000, 2000, 3000).sumOf { numbers.getModulo(zeroIndex + it).value }
}
fun main() {
val numbers = mapLines { it.toLong() }
println(decrypt(numbers, 1))
println(decrypt(numbers.map { it * 811589153 }, 10))
}