39 lines
1.2 KiB
Kotlin
39 lines
1.2 KiB
Kotlin
import java.io.File
|
|
|
|
fun getValue(map: Map<String, Long>, key: String): Long {
|
|
return if(key.contains(Regex("\\d+"))) key.toLong() else map.getOrDefault(key, 0L)
|
|
}
|
|
|
|
fun main(args: Array<String>) {
|
|
val file = File("../puzzle_23.txt")
|
|
// val file = File("test.txt")
|
|
val lines = file.readLines().map { it.split(" ") }
|
|
val firstLine = lines.first()
|
|
|
|
val registers = mutableMapOf<String, Long>()
|
|
var index = 0
|
|
var count = 0
|
|
lines.forEach {
|
|
}
|
|
registers["a"] = 1
|
|
while(index < lines.size){
|
|
val split = lines[index]
|
|
if(split[0] == "set") {
|
|
registers[split[1]] = getValue(registers, split[2])
|
|
} else if (split[0] == "sub") {
|
|
registers[split[1]] = (registers[split[1]] ?: 0) - getValue(registers, split[2])
|
|
} else if(split[0] == "mul") {
|
|
registers[split[1]] = (registers[split[1]] ?: 0) * getValue(registers, split[2])
|
|
} else if(split[0] == "jnz") {
|
|
val cond = getValue(registers, split[1])
|
|
val offset = getValue(registers, split[2])
|
|
if(cond != 0L) {
|
|
index += offset.toInt()
|
|
continue
|
|
}
|
|
}
|
|
index++
|
|
}
|
|
println(count)
|
|
println(registers["h"])
|
|
} |