AdventOfCode-2017/day23.kt

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"])
}