hands to int64

master
Bel LaPointe 2021-03-17 13:36:58 -05:00
parent cc4a19a47c
commit 117250f5c1
4 changed files with 23 additions and 23 deletions

View File

@ -5,7 +5,7 @@ import (
"sort"
)
func royalFlush(game *entity.Game, _ interface{}) uint64 {
func royalFlush(game *entity.Game, _ interface{}) int64 {
hand := getHand(game)
if !hand.Flush() || !hand.Straight() {
return 0
@ -18,7 +18,7 @@ func royalFlush(game *entity.Game, _ interface{}) uint64 {
return 1
}
func straightFlush(game *entity.Game, _ interface{}) uint64 {
func straightFlush(game *entity.Game, _ interface{}) int64 {
hand := getHand(game)
if !hand.Flush() || !hand.Straight() {
return 0
@ -29,14 +29,14 @@ func straightFlush(game *entity.Game, _ interface{}) uint64 {
biggest = card.Value
}
}
return uint64(biggest)
return int64(biggest)
}
func fourOfAKind(game *entity.Game, _ interface{}) uint64 {
func fourOfAKind(game *entity.Game, _ interface{}) int64 {
return nOfAKind(game, 4)
}
func fullHouse(game *entity.Game, _ interface{}) uint64 {
func fullHouse(game *entity.Game, _ interface{}) int64 {
hand := getHand(game)
counts := counts(hand)
trio := entity.Card{}
@ -52,10 +52,10 @@ func fullHouse(game *entity.Game, _ interface{}) uint64 {
if trio.Value == 0 || duo.Value == 0 {
return 0
}
return uint64(trio.Value*100 + duo.Value)
return int64(trio.Value*100 + duo.Value)
}
func flush(game *entity.Game, _ interface{}) uint64 {
func flush(game *entity.Game, _ interface{}) int64 {
hand := getHand(game)
if !hand.Flush() {
return 0
@ -63,7 +63,7 @@ func flush(game *entity.Game, _ interface{}) uint64 {
return highCard(game, nil)
}
func straight(game *entity.Game, _ interface{}) uint64 {
func straight(game *entity.Game, _ interface{}) int64 {
hand := getHand(game)
if !hand.Straight() {
return 0
@ -74,14 +74,14 @@ func straight(game *entity.Game, _ interface{}) uint64 {
big = card.Value
}
}
return uint64(big)
return int64(big)
}
func threeOfAKind(game *entity.Game, _ interface{}) uint64 {
func threeOfAKind(game *entity.Game, _ interface{}) int64 {
return nOfAKind(game, 3)
}
func twoPair(game *entity.Game, _ interface{}) uint64 {
func twoPair(game *entity.Game, _ interface{}) int64 {
high := nOfAKind(game, 2)
if high == 0 {
return 0
@ -92,7 +92,7 @@ func twoPair(game *entity.Game, _ interface{}) uint64 {
low := 0
highCard := 0
for k, v := range counts {
if ((uint64(k.Value) != high && v >= 2) || v >= 4) && k.Value > low {
if ((int64(k.Value) != high && v >= 2) || v >= 4) && k.Value > low {
low = k.Value
}
}
@ -100,18 +100,18 @@ func twoPair(game *entity.Game, _ interface{}) uint64 {
return 0
}
for k, v := range counts {
if ((uint64(k.Value) != high && k.Value != low) || v > 4 || v == 3) && k.Value > highCard {
if ((int64(k.Value) != high && k.Value != low) || v > 4 || v == 3) && k.Value > highCard {
highCard = k.Value
}
}
return high*100*100 + uint64(low*100+highCard)
return high*100*100 + int64(low*100+highCard)
}
func pair(game *entity.Game, _ interface{}) uint64 {
func pair(game *entity.Game, _ interface{}) int64 {
return nOfAKind(game, 2)
}
func nOfAKind(game *entity.Game, n int) uint64 {
func nOfAKind(game *entity.Game, n int) int64 {
hand := getHand(game)
counts := counts(hand)
best := entity.Card{}
@ -129,19 +129,19 @@ func nOfAKind(game *entity.Game, n int) uint64 {
if best.Value == 0 {
return 0
}
return uint64(best.Value*100 + high.Value)
return int64(best.Value*100 + high.Value)
}
func highCard(game *entity.Game, _ interface{}) uint64 {
func highCard(game *entity.Game, _ interface{}) int64 {
hand := getHand(game)
values := make([]int, 0)
for _, card := range hand.AllCards() {
values = append(values, card.Value)
}
sort.Ints(values)
value := uint64(0)
value := int64(0)
for i := len(values) - 1; i >= 0; i-- {
value = value*100 + uint64(values[i])
value = value*100 + int64(values[i])
}
return value
}

View File

@ -498,7 +498,7 @@ func testHand(t *testing.T, name string, foo Int, public []entity.Card, private
},
}
got := foo(game, nil)
if got != uint64(want) {
if got != int64(want) {
t.Fatal(want, got)
}
})

View File

@ -6,7 +6,7 @@ import (
"local/sandbox/cards/src/entity"
)
type Int func(*entity.Game, interface{}) uint64
type Int func(*entity.Game, interface{}) int64
var intStringified = map[string]Int{
"royalFlush": royalFlush,

View File

@ -6,7 +6,7 @@ import (
)
func TestOperationInterface(t *testing.T) {
foo := func(*entity.Game, interface{}) uint64 { return 0 }
foo := func(*entity.Game, interface{}) int64 { return 0 }
var _ Int = foo
bar := func(*entity.Game, interface{}) bool { return false }
var _ Bool = bar