Compare commits

..

No commits in common. "75de281ceeb73e0cfa23109be6bd1ceb1d128b10" and "b806264154aa8ebdb06c4051df65a19cdbb09ee4" have entirely different histories.

2 changed files with 1 additions and 29 deletions

View File

@ -264,18 +264,9 @@ func (d *Deck[C]) ShuffleTop(frac float64) error {
return d.ShuffleRange(0.0, frac) return d.ShuffleRange(0.0, frac)
} }
// ShuffleBottom uses ShuffleRange to shuffle the bottom frac (between 0.0 and // Shufflebottom uses ShuffleRange to shuffle the bottom frac (between 0.0 and
// 1.0) of the deck. See ShuffleRange and ShufflePart for information on // 1.0) of the deck. See ShuffleRange and ShufflePart for information on
// rounding and warnings. // rounding and warnings.
func (d *Deck[C]) ShuffleBottom(frac float64) error { func (d *Deck[C]) ShuffleBottom(frac float64) error {
return d.ShuffleRange(frac, 1.0) return d.ShuffleRange(frac, 1.0)
} }
// Strip removes all cards from the deck where shouldRemove returns true.
// shouldRemove is provided with each card in the deck and its index.
// It returns how many cards were stripped from the deck.
func (d *Deck[C]) Strip(shouldRemove func(idx int, c Card[C]) bool) int {
origLen := d.Len()
d.cards = Strip(d.cards, shouldRemove)
return origLen - d.Len()
}

View File

@ -126,22 +126,3 @@ func ShufflePart[T any](slice []T, r *rand.Rand, loc, n int) {
} }
ShuffleAll(slice[loc:loc+n], r) ShuffleAll(slice[loc:loc+n], r)
} }
// Strip iterates T, removing any element for which removeWhen returns true
// (when provided the index of the element and the element itself as arguments).
// It returns the stripped slice.
func Strip[T any](slice []T, removeWhen func(idx int, t T) bool) []T {
if len(slice) == 0 {
return nil
}
to := 0
for from, e := range slice {
if !removeWhen(from, e) {
if to != from {
slice[to] = slice[from]
}
to++
}
}
return slice[:to]
}