74 lines
1.3 KiB
Go
74 lines
1.3 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"bufio"
|
||
|
"bytes"
|
||
|
"fmt"
|
||
|
"testing"
|
||
|
|
||
|
_ "embed"
|
||
|
|
||
|
"github.com/matryer/is"
|
||
|
)
|
||
|
|
||
|
// AKQJT98765432
|
||
|
// dcba987654321
|
||
|
|
||
|
//go:embed example.txt
|
||
|
var example []byte
|
||
|
|
||
|
//go:embed input.txt
|
||
|
var input []byte
|
||
|
|
||
|
func TestHands(t *testing.T) {
|
||
|
is := is.New(t)
|
||
|
|
||
|
var game Game
|
||
|
game.cardOrder = getOrder(1)
|
||
|
|
||
|
h := Play{0, []rune("AAA23"), &game}
|
||
|
is.Equal(h.HandType(), "3K-A")
|
||
|
|
||
|
h = Play{0, []rune("JJJJJ"), &game}
|
||
|
is.Equal(h.HandType(), "5K-J")
|
||
|
is.Equal(fmt.Sprintf("%x", h.HandStrength()), "7aaaaa")
|
||
|
|
||
|
h = Play{0, []rune("KKKKJ"), &game}
|
||
|
is.Equal(h.HandType(), "4K-K")
|
||
|
is.Equal(fmt.Sprintf("%x", h.HandStrength()), "6cccca")
|
||
|
|
||
|
h = Play{0, []rune("QQQJA"), &game}
|
||
|
is.Equal(h.HandType(), "3K-Q")
|
||
|
is.Equal(fmt.Sprintf("%x", h.HandStrength()), "4bbbad")
|
||
|
|
||
|
}
|
||
|
|
||
|
func TestPower(t *testing.T) {
|
||
|
for i := 1; i <= 13; i++ {
|
||
|
for j := 100; j < 800; j += 100 {
|
||
|
t.Log(i, j, i+j)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestExample(t *testing.T) {
|
||
|
is := is.New(t)
|
||
|
scan := bufio.NewScanner(bytes.NewReader(example))
|
||
|
|
||
|
score1, score2 := run(scan)
|
||
|
is.Equal(score1, uint64(6440))
|
||
|
is.Equal(score2, uint64(5905))
|
||
|
}
|
||
|
|
||
|
func TestSolution(t *testing.T) {
|
||
|
is := is.New(t)
|
||
|
scan := bufio.NewScanner(bytes.NewReader(input))
|
||
|
|
||
|
score1, score2 := run(scan)
|
||
|
t.Log("score1", score1)
|
||
|
is.Equal(score1, uint64(248559379))
|
||
|
|
||
|
t.Log("score2", score2)
|
||
|
is.Equal(score2, uint64(248761814))
|
||
|
}
|