val input = readText("y2019/w2/d08/input.txt") val width = 25 val height = 6 fun main() { val layers = input.chunked(width * height) println("Part 1: " + layers.minBy { c -> c.count { it == '0' } } ?.let { layer -> layer.count { it == '1' } * layer.count { it == '2' } }) val result = (0 until height).map { y -> (0 until width).map { x -> layers.map { it[y * width + x] }.find { it != '2' } ?: '2' } }.joinToString("\n") { it.joinToString("") { when (it) { '0' -> " " '1' -> "#" else -> it.toString() } } } println("Part 2:") println(result) }