Added Day 4
This commit is contained in:
parent
f87d8d7cf5
commit
12f09dc71f
3 changed files with 77 additions and 0 deletions
BIN
day4/d4p1.ods
Normal file
BIN
day4/d4p1.ods
Normal file
Binary file not shown.
71
day4/d4p2.go
Normal file
71
day4/d4p2.go
Normal file
|
@ -0,0 +1,71 @@
|
|||
// +build linux
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
//"io"
|
||||
//"bufio"
|
||||
"os"
|
||||
"strings"
|
||||
"regexp"
|
||||
)
|
||||
|
||||
func find_num_wins(winners string, numbers string) int {
|
||||
wins := 0
|
||||
for _, number := range strings.Split(numbers, " ") {
|
||||
for _, winner := range strings.Split(winners, " ") {
|
||||
if number == winner && len(number) > 0 {
|
||||
wins++
|
||||
}
|
||||
}
|
||||
}
|
||||
return wins
|
||||
}
|
||||
|
||||
|
||||
func main() {
|
||||
if len(os.Args) < 2 {
|
||||
panic("You did not specify an input file.")
|
||||
}
|
||||
|
||||
rawInput, err := os.ReadFile(os.Args[1])
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
stringInput := strings.Trim(string(rawInput), "\n")
|
||||
stringInput = regexp.MustCompile(`(Card.*:\ )`).ReplaceAllString(stringInput, "")
|
||||
|
||||
lines := strings.Split(stringInput, "\n")
|
||||
|
||||
var cards []int
|
||||
cards = make([]int, len(lines))
|
||||
|
||||
for i,_ := range cards {
|
||||
cards[i] = 1
|
||||
}
|
||||
|
||||
sum := 0
|
||||
|
||||
for card, game := range lines {
|
||||
if len(game) < 10 {
|
||||
continue
|
||||
}
|
||||
|
||||
game_ := strings.Split(game, " | ")
|
||||
winners := game_[0]
|
||||
numbers := game_[1]
|
||||
|
||||
wins := find_num_wins(numbers, winners)
|
||||
|
||||
sum += cards[card]
|
||||
|
||||
for i := 0; i < wins; i++ {
|
||||
cards[card+i+1] += cards[card]
|
||||
}
|
||||
|
||||
fmt.Println(card+1, cards[card])
|
||||
}
|
||||
|
||||
fmt.Println("Answer: ", sum)
|
||||
}
|
6
day4/sample1
Normal file
6
day4/sample1
Normal file
|
@ -0,0 +1,6 @@
|
|||
Card 1: 41 48 83 86 17 | 83 86 6 31 17 9 48 53
|
||||
Card 2: 13 32 20 16 61 | 61 30 68 82 17 32 24 19
|
||||
Card 3: 1 21 53 59 44 | 69 82 63 72 16 21 14 1
|
||||
Card 4: 41 92 73 84 69 | 59 84 76 51 58 5 54 83
|
||||
Card 5: 87 83 26 28 32 | 88 30 70 12 93 22 82 36
|
||||
Card 6: 31 18 13 56 72 | 74 77 10 23 35 67 36 11
|
Loading…
Reference in a new issue