poker

package module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 8, 2019 License: MIT Imports: 3 Imported by: 5

README

Poker

CircleCI GoDoc codecov

Poker is ported from the Python library worldveil/deuces.

Installation

Use go get to install Poker:

$ go get github.com/chehsunliu/poker

Usage

Support 5-, 6-, and 7-card evalutions:

package main

import (
	"fmt"

	"github.com/chehsunliu/poker"
)

func main() {
	deck := poker.NewDeck()
	hand := deck.Draw(7)
	fmt.Println(hand)

	rank := poker.Evaluate(hand)
	fmt.Println(rank)
	fmt.Println(poker.RankString(rank))
}
$ go run ./main.go
[Kd 4h Qh 3s 8s 5h Jd]
6695
High Card

$ go run ./main.go
[4c Qh Ad 9c 9s 3h 4d]
3062
Two Pair

$ go run ./main.go
[Jh Qd Kd Qs 7d As Qh]
1742
Three of a Kind

Performance

Compared with notnil/joker, Poker is 160x faster on 5-card evaluation, and drops to 40x faster on 7-card evaluation.

go test -bench=. -benchtime 5s
goos: darwin
goarch: amd64
pkg: github.com/chehsunliu/poker
BenchmarkFivePoker-4    	23396181	       253 ns/op
BenchmarkFiveJoker-4    	  141036	     41662 ns/op
BenchmarkSixPoker-4     	 3037298	      1949 ns/op
BenchmarkSixJoker-4     	   28158	    211533 ns/op
BenchmarkSevenPoker-4   	  356448	     16357 ns/op
BenchmarkSevenJoker-4   	    7143	    759394 ns/op
PASS
ok  	github.com/chehsunliu/poker	40.111s

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Evaluate

func Evaluate(cards []Card) int32

func RankClass

func RankClass(rank int32) int32

func RankString

func RankString(rank int32) string

Types

type Card

type Card int32

func NewCard

func NewCard(s string) Card

func (Card) BitRank

func (c Card) BitRank() int32

func (*Card) MarshalJSON

func (c *Card) MarshalJSON() ([]byte, error)

func (Card) Prime

func (c Card) Prime() int32

func (Card) Rank

func (c Card) Rank() int32

func (Card) String

func (c Card) String() string

func (Card) Suit

func (c Card) Suit() int32

func (*Card) UnmarshalJSON

func (c *Card) UnmarshalJSON(b []byte) error

type Deck

type Deck struct {
	// contains filtered or unexported fields
}

func NewDeck

func NewDeck() *Deck

func (*Deck) Draw

func (deck *Deck) Draw(n int) []Card

func (*Deck) Empty

func (deck *Deck) Empty() bool

func (*Deck) Shuffle

func (deck *Deck) Shuffle()

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL