refactor d4
This commit is contained in:
parent
0338b14930
commit
dfb6e1952d
3 changed files with 40 additions and 36 deletions
35
d4/common.go
35
d4/common.go
|
@ -66,41 +66,6 @@ func gotBingo(b board) bool {
|
|||
return false
|
||||
}
|
||||
|
||||
func findBingo(boards []board, takes []string) (board, int) {
|
||||
|
||||
for _, take := range takes {
|
||||
converted, _ := strconv.Atoi(take)
|
||||
for _, board := range boards {
|
||||
marked := markBoard(board, converted)
|
||||
if gotBingo(marked) {
|
||||
return marked, converted
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return nil, 0
|
||||
}
|
||||
|
||||
func findBingo2(boards []board, takes []string) (board, int) {
|
||||
bingos := make(map[*board]int)
|
||||
wins := []*board{}
|
||||
for _, take := range takes {
|
||||
converted, _ := strconv.Atoi(take)
|
||||
for boardIndex := range boards {
|
||||
board := &boards[boardIndex]
|
||||
if _, ok := bingos[board]; !ok {
|
||||
marked := markBoard(*board, converted)
|
||||
if gotBingo(marked) {
|
||||
bingos[board] = converted
|
||||
wins = append(wins, board)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return *wins[len(wins)-1], bingos[wins[len(wins)-1]]
|
||||
}
|
||||
|
||||
func score(b board, take int) int {
|
||||
sum := 0
|
||||
|
||||
|
|
16
d4/p1.go
16
d4/p1.go
|
@ -1,9 +1,25 @@
|
|||
package d4
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func findBingo(boards []board, takes []string) (board, int) {
|
||||
|
||||
for _, take := range takes {
|
||||
converted, _ := strconv.Atoi(take)
|
||||
for _, board := range boards {
|
||||
marked := markBoard(board, converted)
|
||||
if gotBingo(marked) {
|
||||
return marked, converted
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return nil, 0
|
||||
}
|
||||
|
||||
func P1(input string) int {
|
||||
lines := strings.Split(input, "\n\n")
|
||||
takes := strings.Split(lines[0], ",")
|
||||
|
|
25
d4/p2.go
25
d4/p2.go
|
@ -1,6 +1,29 @@
|
|||
package d4
|
||||
|
||||
import "strings"
|
||||
import (
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func findBingo2(boards []board, takes []string) (board, int) {
|
||||
bingos := make(map[*board]int)
|
||||
wins := []*board{}
|
||||
for _, take := range takes {
|
||||
converted, _ := strconv.Atoi(take)
|
||||
for boardIndex := range boards {
|
||||
board := &boards[boardIndex]
|
||||
if _, ok := bingos[board]; !ok {
|
||||
marked := markBoard(*board, converted)
|
||||
if gotBingo(marked) {
|
||||
bingos[board] = converted
|
||||
wins = append(wins, board)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return *wins[len(wins)-1], bingos[wins[len(wins)-1]]
|
||||
}
|
||||
|
||||
func P2(input string) int {
|
||||
lines := strings.Split(input, "\n\n")
|
||||
|
|
Loading…
Reference in a new issue