43 lines
770 B
Go
43 lines
770 B
Go
package main
|
|
|
|
import (
|
|
"os"
|
|
"fmt"
|
|
. "aoc/aoc"
|
|
)
|
|
|
|
func find_winner(numbers []int, boards []Board) (*Board, int) {
|
|
for _, number := range numbers {
|
|
for b, _ := range boards {
|
|
if MarkBoard(&boards[b], number) {
|
|
return &boards[b], number
|
|
}
|
|
}
|
|
}
|
|
|
|
return nil, -1
|
|
}
|
|
|
|
func main() {
|
|
path := os.Args[1]
|
|
|
|
numbers, boards, err := ReadFile(path)
|
|
|
|
if err != nil {
|
|
os.Exit(1)
|
|
}
|
|
|
|
board, last_number := find_winner(numbers, boards)
|
|
|
|
var unmarked_sum = 0
|
|
for _, row := range board.Fields {
|
|
for _, col := range row {
|
|
if !col.Marked {
|
|
unmarked_sum += col.Value;
|
|
}
|
|
}
|
|
}
|
|
|
|
fmt.Println(unmarked_sum * last_number)
|
|
}
|