Ver código fonte

Improve ChoiceMap

master
Noëlle Anthony 5 anos atrás
pai
commit
df13433a9b
1 arquivos alterados com 32 adições e 21 exclusões
  1. 32
    21
      src/util/arrays.go

+ 32
- 21
src/util/arrays.go Ver arquivo

@@ -34,26 +34,37 @@ func ChoiceStr(ary []string) string {
func ChoiceMap(ary map[string]int) (string, int) {
rand.Seed(time.Now().UnixNano())
l := len(ary)
if l == 0 {
return "", 0
keys := make([]string, 0, l)
for k := range ary {
keys = append(keys, k)
}
// fmt.Println(l)
key, val, rot := "", 0, 0
for key == "" {
// Debug(rot, key, val)
for k, v := range ary {
// Debug(k, v)
// Debug(rot)
r := 0
if rot < 3 {
r = rand.Intn(l)
}
if r == 0 {
return k, v
}
}
rot++
// fmt.Println(key, val)
}
return key, val
sel := ChoiceStr(keys)
return sel, ary[sel]
}

// func ChoiceMap(ary map[string]int) (string, int) {
// rand.Seed(time.Now().UnixNano())
// l := len(ary)
// if l == 0 {
// return "", 0
// }
// // fmt.Println(l)
// key, val, rot := "", 0, 0
// for key == "" {
// // Debug(rot, key, val)
// for k, v := range ary {
// // Debug(k, v)
// // Debug(rot)
// r := 0
// if rot < 3 {
// r = rand.Intn(l)
// }
// if r == 0 {
// return k, v
// }
// }
// rot++
// // fmt.Println(key, val)
// }
// return key, val
// }

Carregando…
Cancelar
Salvar