better types, more idiomatic go
This commit is contained in:
		
							parent
							
								
									6d2c71663c
								
							
						
					
					
						commit
						c5f0c257cb
					
				| @ -9,26 +9,48 @@ import rand "math/rand" | |||||||
| 
 | 
 | ||||||
| import "strings" | import "strings" | ||||||
| 
 | 
 | ||||||
| const CLUB = "\u2663" | type Suit rune | ||||||
| const SPADE = "\u2660" | type Rank rune | ||||||
| const DIAMOND = "\u2666" | 
 | ||||||
| const HEART = "\u2665" | const ( | ||||||
|  | 	CLUB    Suit = '\u2663' | ||||||
|  | 	SPADE   Suit = '\u2660' | ||||||
|  | 	DIAMOND Suit = '\u2666' | ||||||
|  | 	HEART   Suit = '\u2665' | ||||||
|  | ) | ||||||
| 
 | 
 | ||||||
| /* | /* | ||||||
|  | // emoji are cooler anyway
 | ||||||
| const CLUB = "C" | const CLUB = "C" | ||||||
| const SPADE = "S" | const SPADE = "S" | ||||||
| const DIAMOND = "D" | const DIAMOND = "D" | ||||||
| const HEART = "H" | const HEART = "H" | ||||||
| */ | */ | ||||||
| 
 | 
 | ||||||
|  | const ( | ||||||
|  | 	ACE   Rank = 'A' | ||||||
|  | 	DEUCE Rank = '2' | ||||||
|  | 	THREE Rank = '3' | ||||||
|  | 	FOUR  Rank = '4' | ||||||
|  | 	FIVE  Rank = '5' | ||||||
|  | 	SIX   Rank = '6' | ||||||
|  | 	SEVEN Rank = '7' | ||||||
|  | 	EIGHT Rank = '8' | ||||||
|  | 	NINE  Rank = '9' | ||||||
|  | 	TEN   Rank = 'T' | ||||||
|  | 	JACK  Rank = 'J' | ||||||
|  | 	QUEEN Rank = 'Q' | ||||||
|  | 	KING  Rank = 'K' | ||||||
|  | ) | ||||||
|  | 
 | ||||||
| type TestGenerationIteration struct { | type TestGenerationIteration struct { | ||||||
| 	Deck *Deck | 	Deck *Deck | ||||||
| 	Seed int64 | 	Seed int64 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| type Card struct { | type Card struct { | ||||||
| 	Rank string | 	Rank Rank | ||||||
| 	Suit string | 	Suit Suit | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| type Cards []*Card | type Cards []*Card | ||||||
| @ -54,13 +76,13 @@ func formatCardForTerminal(c Card) (output string) { | |||||||
| 	var suit string | 	var suit string | ||||||
| 	color := Red | 	color := Red | ||||||
| 	switch c.Suit { | 	switch c.Suit { | ||||||
| 	case DIAMOND: | 	case Suit(DIAMOND): | ||||||
| 		color = Blue | 		color = Blue | ||||||
| 	case HEART: | 	case Suit(HEART): | ||||||
| 		color = Red | 		color = Red | ||||||
| 	case CLUB: | 	case Suit(CLUB): | ||||||
| 		color = Green | 		color = Green | ||||||
| 	case SPADE: | 	case Suit(SPADE): | ||||||
| 		color = Black | 		color = Black | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| @ -80,17 +102,19 @@ func cryptoUint64() (v uint64) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (self *Card) String() string { | func (self *Card) String() string { | ||||||
| 	return fmt.Sprintf("%s%s", self.Rank, self.Suit) | 	return fmt.Sprintf("%s%s", string(self.Rank), string(self.Suit)) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func NewDeck() *Deck { | func NewDeck() *Deck { | ||||||
| 
 | 
 | ||||||
| 	self := new(Deck) | 	self := new(Deck) | ||||||
| 
 | 
 | ||||||
| 	ranks := []string{"A", "2", "3", "4", "5", "6", "7", | 	ranks := []Rank{ | ||||||
| 		"8", "9", "T", "J", "Q", "K"} | 		ACE, DEUCE, THREE, FOUR, FIVE, | ||||||
|  | 		SIX, SEVEN, EIGHT, NINE, TEN, JACK, | ||||||
|  | 		QUEEN, KING} | ||||||
| 
 | 
 | ||||||
| 	suits := []string{HEART, DIAMOND, CLUB, SPADE} | 	suits := []Suit{HEART, DIAMOND, CLUB, SPADE} | ||||||
| 
 | 
 | ||||||
| 	self.Cards = make([]*Card, 52) | 	self.Cards = make([]*Card, 52) | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -8,8 +8,7 @@ type ShuffleTestResults []struct { | |||||||
| 	Expected string | 	Expected string | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func TestPokerHand(t *testing.T) { | func TestPokerDeck(t *testing.T) { | ||||||
| 	//test stuff here
 |  | ||||||
| 	d := NewDeck() | 	d := NewDeck() | ||||||
| 	d.ShuffleDeterministically(437) | 	d.ShuffleDeterministically(437) | ||||||
| 	cards := d.Deal(7) | 	cards := d.Deal(7) | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user