-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathy25day3.kt
More file actions
21 lines (18 loc) · 847 Bytes
/
Copy pathy25day3.kt
File metadata and controls
21 lines (18 loc) · 847 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import kotlin.time.measureTimedValue
fun main() {
val batteries = generateSequence(::readlnOrNull).toList()
measureTimedValue { // part 1
batteries.asSequence().map { battery ->
val max1 = (0..<battery.indices.last).maxBy { i -> battery[i].digitToInt() }
val max2 = ((max1 + 1)..battery.indices.last).maxBy { i -> battery[i].digitToInt() }
"${battery[max1]}${battery[max2]}".toInt()
}.sum()
}.also(::println)
measureTimedValue { // part 2
batteries.asSequence().map { battery ->
(12 downTo 1).asSequence().runningFold(-1) { lastMaxI, i ->
((lastMaxI + 1)..(battery.length - i)).maxBy { battery[it].digitToInt() }
}.drop(1).joinToString(separator = "") { battery[it].toString() }.toLong()
}.sum()
}.also(::println)
}