Albirew/nyaa-pantsu
Archivé
1
0
Bifurcation 0
Ce dépôt a été archivé le 2022-05-07. Vous pouvez voir ses fichiers ou le cloner, mais pas ouvrir de ticket ou de demandes d'ajout, ni soumettre de changements.
nyaa-pantsu/vendor/github.com/anacrolix/missinggo/iter/iterutils.go
akuma06 a41f938cec Add Godep support (#758)
As we have seen, dependencies version can prevent the build. We should
user lock versions on dependencies that we know work:
* Packages are vendored
* Add Godep support
* Added addtional install step in readme
* Fix travis build error
2017-05-26 13:07:22 +02:00

42 lignes
663 o
Go

package iter
import "math/rand"
type seq struct {
i []int
}
// Creates sequence of values from [0, n)
func newSeq(n int) seq {
return seq{make([]int, n, n)}
}
func (me seq) Index(i int) (ret int) {
ret = me.i[i]
if ret == 0 {
ret = i
}
return
}
func (me seq) Len() int {
return len(me.i)
}
// Remove the nth value from the sequence.
func (me *seq) DeleteIndex(index int) {
me.i[index] = me.Index(me.Len() - 1)
me.i = me.i[:me.Len()-1]
}
func ForPerm(n int, callback func(i int) (more bool)) bool {
s := newSeq(n)
for s.Len() > 0 {
r := rand.Intn(s.Len())
if !callback(s.Index(r)) {
return false
}
s.DeleteIndex(r)
}
return true
}