package generators import ( "encoding/json" "math/rand" "os" ) type YuanTiArrays struct { Nm1 []string `json:"nm1"` Nm2 []string `json:"nm2"` Nm3 []string `json:"nm3"` Nm4 []string `json:"nm4"` Nm5 []string `json:"nm5"` Nm6 []string `json:"nm6"` } func LoadYuanTiArrays(path string) (YuanTiArrays, error) { var arr YuanTiArrays f, err := os.Open(path) if err != nil { return arr, err } defer f.Close() dec := json.NewDecoder(f) if err := dec.Decode(&arr); err != nil { return arr, err } return arr, nil } func GenerateYuanTiNames(arr *YuanTiArrays, swear func(string) bool) []string { var names []string for i := 0; i < 10; i++ { var name string rnd := rand.Intn(len(arr.Nm1)) rnd2 := rand.Intn(len(arr.Nm2)) rnd3 := rand.Intn(len(arr.Nm3)) rnd4 := rand.Intn(len(arr.Nm5)) rnd5 := rand.Intn(len(arr.Nm6)) if i < 6 { for arr.Nm1[rnd] == arr.Nm3[rnd3] || arr.Nm3[rnd3] == arr.Nm6[rnd5] { rnd3 = rand.Intn(len(arr.Nm3)) } name = arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm3[rnd3] + arr.Nm5[rnd4] + arr.Nm6[rnd5] } else { rnd6 := rand.Intn(len(arr.Nm4)) rnd7 := rand.Intn(len(arr.Nm2)) for arr.Nm3[rnd4] == arr.Nm4[rnd6] || arr.Nm4[rnd6] == arr.Nm6[rnd5] { rnd6 = rand.Intn(len(arr.Nm4)) } name = arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm3[rnd3] + arr.Nm2[rnd7] + arr.Nm4[rnd6] + arr.Nm5[rnd4] + arr.Nm6[rnd5] } if !swear(name) { names = append(names, name) } } return names }