diff --git a/2021/src/main/kotlin/Day04.kt b/2021/src/main/kotlin/Day04.kt index 80b247f..95bd1b9 100644 --- a/2021/src/main/kotlin/Day04.kt +++ b/2021/src/main/kotlin/Day04.kt @@ -25,26 +25,12 @@ class Day04 : BaseDay() { private fun playBoard(board: List>, numbers: List): Pair { for (round in numbers.indices) { val usedNumbers = numbers.take(round) - var winning = false - for (line in board) { + for (line in board + board[0].indices.map { col -> board.map { it[col] } }) { if (usedNumbers.containsAll(line)) { - winning = true - break + val unmarkedNumbers = board.flatten().toMutableSet().also { it.removeAll(usedNumbers) } + return round to unmarkedNumbers.sum() * usedNumbers.last() } } - if (!winning) { - for (i in board[0].indices) { - val column = board.map { it[i] } - if (usedNumbers.containsAll(column)) { - winning = true - break - } - } - } - if (winning) { - val unmarkedNumbers = board.flatten().toMutableSet().also { it.removeAll(usedNumbers) } - return round to unmarkedNumbers.sum() * usedNumbers.last() - } } error("No wins") }