Kotlin
First day this year where I am very happy with my solution. Just super simple, recursive string building.
Solution
class Day03 : Puzzle {
val banks = mutableListOf<String>()
override fun readFile() {
val input = readInputFromFile("src/main/resources/a2025/day03.txt")
banks.addAll(input.lines().filter(String::isNotBlank))
}
override fun solvePartOne(): String {
val sum = banks.map { buildNumber(it, 2) }.sumOf { it.toLong() }
return sum.toString()
}
override fun solvePartTwo(): String {
val sum = banks.map { buildNumber(it, 12) }.sumOf { it.toLong() }
return sum.toString()
}
private fun buildNumber(bank: String, remainingDigits: Int): String {
if (remainingDigits <= 0) return ""
val current = bank.dropLast(remainingDigits - 1)
val max = current.max()
return max + buildNumber(bank.split(max, limit = 2)[1], remainingDigits - 1)
}
}
full code on Codeberg