mirror of
https://github.com/Crocmagnon/advent-of-code.git
synced 2024-11-21 14:08:11 +01:00
solve day 7 part 2
This commit is contained in:
parent
17049c1f98
commit
090495d0e9
2 changed files with 20 additions and 11 deletions
|
@ -36,14 +36,6 @@ func newD07Hand(hand string, bid int) d07Hand {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func newD07HandP2(hand string, bid int) d07Hand {
|
|
||||||
return d07Hand{
|
|
||||||
hand: hand,
|
|
||||||
bid: bid,
|
|
||||||
value: d07HandValueP2(hand),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func Day07Part1(input io.Reader) (int, error) {
|
func Day07Part1(input io.Reader) (int, error) {
|
||||||
scanner := bufio.NewScanner(input)
|
scanner := bufio.NewScanner(input)
|
||||||
|
|
||||||
|
@ -153,11 +145,19 @@ func Day07Part2(input io.Reader) (int, error) {
|
||||||
return sum, nil
|
return sum, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func newD07HandP2(hand string, bid int) d07Hand {
|
||||||
|
return d07Hand{
|
||||||
|
hand: hand,
|
||||||
|
bid: bid,
|
||||||
|
value: d07HandValueP2(hand),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func d07HandValueP2(hand string) int {
|
func d07HandValueP2(hand string) int {
|
||||||
count := make(map[rune]byte)
|
count := make(map[rune]byte)
|
||||||
var maxCount byte = 1
|
var maxCount byte = 0
|
||||||
var maxFor rune
|
var maxFor rune
|
||||||
var secondMax byte = 1
|
var secondMax byte = 0
|
||||||
for _, c := range hand {
|
for _, c := range hand {
|
||||||
v := count[c]
|
v := count[c]
|
||||||
v++
|
v++
|
||||||
|
|
|
@ -22,7 +22,7 @@ func TestDay07Part2(t *testing.T) {
|
||||||
tests := []testCase{
|
tests := []testCase{
|
||||||
{"inputs/day07_test1", 5905},
|
{"inputs/day07_test1", 5905},
|
||||||
{"inputs/day07_test2", 5911},
|
{"inputs/day07_test2", 5911},
|
||||||
{"inputs/day07", 0}, // 247974245 is too low
|
{"inputs/day07", 248256639},
|
||||||
}
|
}
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
t.Run(test.filename, check(test, Day07Part2))
|
t.Run(test.filename, check(test, Day07Part2))
|
||||||
|
@ -64,6 +64,7 @@ func TestDay07HandValueP2(t *testing.T) {
|
||||||
hand string
|
hand string
|
||||||
expected int
|
expected int
|
||||||
}{
|
}{
|
||||||
|
{"JJJJJ", d07HandFive},
|
||||||
{"AAAAA", d07HandFive},
|
{"AAAAA", d07HandFive},
|
||||||
{"AAJJJ", d07HandFive},
|
{"AAJJJ", d07HandFive},
|
||||||
{"AAAA2", d07HandFour},
|
{"AAAA2", d07HandFour},
|
||||||
|
@ -157,6 +158,14 @@ func TestD07CmpHandsP2(t *testing.T) {
|
||||||
args: args{"QQQQ2", "JKKK2"},
|
args: args{"QQQQ2", "JKKK2"},
|
||||||
want: 1,
|
want: 1,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
args: args{"QQQQ2", "JJJJJ"},
|
||||||
|
want: -1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
args: args{"22222", "JJJJJ"},
|
||||||
|
want: 1,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
for _, tt := range tests {
|
for _, tt := range tests {
|
||||||
char := "<"
|
char := "<"
|
||||||
|
|
Loading…
Reference in a new issue