import java.io.File fun getValue(map: Map, key: String): Long { return if(key.contains(Regex("\\d+"))) key.toLong() else map.getOrDefault(key, 0L) } fun main(args: Array) { 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() 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"]) }