105 lines
2.5 KiB
Go
105 lines
2.5 KiB
Go
package cards
|
|
|
|
import "sort"
|
|
|
|
// Cards is a slice of Cards.
|
|
type Cards []Card
|
|
|
|
// StandardCards is a slice of standard cards.
|
|
var StandardCards = Cards{
|
|
NewCard(FaceAce, SuitHearts),
|
|
NewCard(Face2, SuitHearts),
|
|
NewCard(Face3, SuitHearts),
|
|
NewCard(Face4, SuitHearts),
|
|
NewCard(Face5, SuitHearts),
|
|
NewCard(Face6, SuitHearts),
|
|
NewCard(Face7, SuitHearts),
|
|
NewCard(Face8, SuitHearts),
|
|
NewCard(Face9, SuitHearts),
|
|
NewCard(Face10, SuitHearts),
|
|
NewCard(FaceJack, SuitHearts),
|
|
NewCard(FaceQueen, SuitHearts),
|
|
NewCard(FaceKing, SuitHearts),
|
|
NewCard(FaceAce, SuitDiamonds),
|
|
NewCard(Face2, SuitDiamonds),
|
|
NewCard(Face3, SuitDiamonds),
|
|
NewCard(Face4, SuitDiamonds),
|
|
NewCard(Face5, SuitDiamonds),
|
|
NewCard(Face6, SuitDiamonds),
|
|
NewCard(Face7, SuitDiamonds),
|
|
NewCard(Face8, SuitDiamonds),
|
|
NewCard(Face9, SuitDiamonds),
|
|
NewCard(Face10, SuitDiamonds),
|
|
NewCard(FaceJack, SuitDiamonds),
|
|
NewCard(FaceQueen, SuitDiamonds),
|
|
NewCard(FaceKing, SuitDiamonds),
|
|
NewCard(FaceAce, SuitClubs),
|
|
NewCard(Face2, SuitClubs),
|
|
NewCard(Face3, SuitClubs),
|
|
NewCard(Face4, SuitClubs),
|
|
NewCard(Face5, SuitClubs),
|
|
NewCard(Face6, SuitClubs),
|
|
NewCard(Face7, SuitClubs),
|
|
NewCard(Face8, SuitClubs),
|
|
NewCard(Face9, SuitClubs),
|
|
NewCard(Face10, SuitClubs),
|
|
NewCard(FaceJack, SuitClubs),
|
|
NewCard(FaceQueen, SuitClubs),
|
|
NewCard(FaceKing, SuitClubs),
|
|
NewCard(FaceAce, SuitSpades),
|
|
NewCard(Face2, SuitSpades),
|
|
NewCard(Face3, SuitSpades),
|
|
NewCard(Face4, SuitSpades),
|
|
NewCard(Face5, SuitSpades),
|
|
NewCard(Face6, SuitSpades),
|
|
NewCard(Face7, SuitSpades),
|
|
NewCard(Face8, SuitSpades),
|
|
NewCard(Face9, SuitSpades),
|
|
NewCard(Face10, SuitSpades),
|
|
NewCard(FaceJack, SuitSpades),
|
|
NewCard(FaceQueen, SuitSpades),
|
|
NewCard(FaceKing, SuitSpades),
|
|
}
|
|
|
|
func (c Cards) Len() int {
|
|
return len(c)
|
|
}
|
|
|
|
func (c Cards) Swap(i, j int) {
|
|
c[i], c[j] = c[j], c[i]
|
|
}
|
|
|
|
func (c Cards) Less(i, j int) bool {
|
|
return c[i].Value() < c[j].Value()
|
|
}
|
|
|
|
// Copy returns a copy of the supplied cards.
|
|
func (c Cards) Copy() Cards {
|
|
cc := make(Cards, len(c))
|
|
copy(cc, c)
|
|
return cc
|
|
}
|
|
|
|
// Sort returns the supplied cards in order.
|
|
func (c Cards) Sort() Cards {
|
|
cc := c.Copy()
|
|
sort.Sort(cc)
|
|
return cc
|
|
}
|
|
|
|
// Reverse returns the supplied cards in reverse order.
|
|
func (c Cards) Reverse() Cards {
|
|
l := len(c)
|
|
cc := make(Cards, l)
|
|
for i := 0; i < l; i++ {
|
|
cc[i] = c[l-i-1]
|
|
}
|
|
return cc
|
|
}
|
|
|
|
// Remove returns the supplied cards excluding the card at the specified index.
|
|
func (c Cards) Remove(i int) Cards {
|
|
cc := c.Copy()
|
|
return append(cc[:i], cc[i+1:]...)
|
|
}
|