Compare commits
3 Commits
5ec77ca0f8
...
fb09a45cab
Author | SHA1 | Date | |
---|---|---|---|
fb09a45cab | |||
e6c53df5c5 | |||
827835f12f |
|
@ -9,7 +9,7 @@ import (
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
if len(os.Args) != 2 {
|
if len(os.Args) != 2 {
|
||||||
fmt.Fprintln(os.Stderr, "Usage: day06 FILE")
|
fmt.Fprintln(os.Stderr, "Usage: day07 FILE")
|
||||||
}
|
}
|
||||||
|
|
||||||
input, err := os.Open(os.Args[1])
|
input, err := os.Open(os.Args[1])
|
||||||
|
@ -40,10 +40,11 @@ func run(scan *bufio.Scanner) (uint64, uint64) {
|
||||||
game.plays = append(game.plays, Play{bid, []rune(cards), &game})
|
game.plays = append(game.plays, Play{bid, []rune(cards), &game})
|
||||||
}
|
}
|
||||||
|
|
||||||
game.cardOrder = getOrder(1)
|
game.cardOrder = getOrder(cardTypes1)
|
||||||
product1 := calcProduct(game)
|
product1 := calcProduct(game)
|
||||||
|
|
||||||
game.cardOrder = getOrder(2)
|
game.cardOrder = getOrder(cardTypes2)
|
||||||
|
game.wildCard = 'J'
|
||||||
product2 := calcProduct(game)
|
product2 := calcProduct(game)
|
||||||
|
|
||||||
return product1, product2
|
return product1, product2
|
||||||
|
@ -64,11 +65,7 @@ func calcProduct(game Game) uint64 {
|
||||||
return product
|
return product
|
||||||
}
|
}
|
||||||
|
|
||||||
func getOrder(v int) map[rune]int {
|
func getOrder(cardTypes []rune) map[rune]int {
|
||||||
cardTypes := cardTypes1
|
|
||||||
if v == 2 {
|
|
||||||
cardTypes = cardTypes2
|
|
||||||
}
|
|
||||||
cardOrder := make(map[rune]int, len(cardTypes))
|
cardOrder := make(map[rune]int, len(cardTypes))
|
||||||
for i, r := range cardTypes {
|
for i, r := range cardTypes {
|
||||||
cardOrder[r] = len(cardTypes) - i
|
cardOrder[r] = len(cardTypes) - i
|
||||||
|
@ -227,7 +224,7 @@ func (g *Game) Counts(cards []rune) map[rune]int {
|
||||||
}
|
}
|
||||||
return m
|
return m
|
||||||
}
|
}
|
||||||
func (g *Game)hasSame(cards []rune) (has1, has2, has3, has4, has5 bool) {
|
func (g *Game) hasSame(cards []rune) (has1, has2, has3, has4, has5 bool) {
|
||||||
cnt := g.Counts(cards)
|
cnt := g.Counts(cards)
|
||||||
for _, c := range cnt {
|
for _, c := range cnt {
|
||||||
switch c {
|
switch c {
|
||||||
|
|
|
@ -24,7 +24,7 @@ func TestHands(t *testing.T) {
|
||||||
is := is.New(t)
|
is := is.New(t)
|
||||||
|
|
||||||
var game Game
|
var game Game
|
||||||
game.cardOrder = getOrder(1)
|
game.cardOrder = getOrder(cardTypes1)
|
||||||
|
|
||||||
h := Play{0, []rune("AAA23"), &game}
|
h := Play{0, []rune("AAA23"), &game}
|
||||||
is.Equal(h.HandType(), "3K-A")
|
is.Equal(h.HandType(), "3K-A")
|
||||||
|
@ -40,7 +40,6 @@ func TestHands(t *testing.T) {
|
||||||
h = Play{0, []rune("QQQJA"), &game}
|
h = Play{0, []rune("QQQJA"), &game}
|
||||||
is.Equal(h.HandType(), "3K-Q")
|
is.Equal(h.HandType(), "3K-Q")
|
||||||
is.Equal(fmt.Sprintf("%x", h.HandStrength()), "4bbbad")
|
is.Equal(fmt.Sprintf("%x", h.HandStrength()), "4bbbad")
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPower(t *testing.T) {
|
func TestPower(t *testing.T) {
|
||||||
|
@ -69,5 +68,5 @@ func TestSolution(t *testing.T) {
|
||||||
is.Equal(score1, uint64(248559379))
|
is.Equal(score1, uint64(248559379))
|
||||||
|
|
||||||
t.Log("score2", score2)
|
t.Log("score2", score2)
|
||||||
is.Equal(score2, uint64(248761814))
|
is.Equal(score2, uint64(249631254))
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user