From 83abcbc6e368bfed1f388671c9ed61dcfd7fb54d Mon Sep 17 00:00:00 2001 From: Max Nuding Date: Sat, 4 Dec 2021 11:22:40 +0100 Subject: [PATCH] 04b - cleanup --- Sources/aoc2021/04.swift | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/Sources/aoc2021/04.swift b/Sources/aoc2021/04.swift index ae61ef0..77eba4d 100644 --- a/Sources/aoc2021/04.swift +++ b/Sources/aoc2021/04.swift @@ -61,35 +61,22 @@ struct Day04 { .map { Int($0)! } _ = lines.removeFirst() //empty seperator line - let boardsInitial = lines + var boards = lines .split(separator: "") .map { boardLines in Board(numbers: boardLines.map { $0.split(separator: " ").map { num in Int(num)! } }) } - var boards = boardsInitial - runA(boards: &boards, inputNumbers: inputNumbers) - - boards = boardsInitial - runB(boards: &boards, inputNumbers: inputNumbers) + run(boards: &boards, inputNumbers: inputNumbers) } - func runA(boards: inout [Board], inputNumbers: [Int]) { - for inputNumber in inputNumbers { - for (idx, var board) in boards.enumerated() { - if board.crossOf(num: inputNumber) && board.checkHasWon() { - print(board.calculateScore() * inputNumber) - return - } - boards[idx] = board - } - } - } - - func runB(boards: inout [Board], inputNumbers: [Int]) { + func run(boards: inout [Board], inputNumbers: [Int]) { var countWon = 0 for inputNumber in inputNumbers { for (idx, var board) in boards.enumerated() { if board.crossOf(num: inputNumber) && !board.hasWon && board.checkHasWon() { + if countWon == 0 { + print(board.calculateScore() * inputNumber) + } countWon += 1 } if countWon == boards.count {