Merge pull request 'fix: forgot to add wild card' (#4) from day07 into main
Reviewed-on: xuu/advent-of-code-2023#4
This commit is contained in:
		
						commit
						fb09a45cab
					
				@ -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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user