package generators import ( "encoding/json" "math/rand" "os" ) type LocathahArrays struct { Nm1 []string `json:"nm1"` Nm2 []string `json:"nm2"` Nm3 []string `json:"nm3"` Nm4 []string `json:"nm4"` Nm5 []string `json:"nm5"` } func LoadLocathahArrays(path string) (LocathahArrays, error) { var arrays LocathahArrays file, err := os.Open(path) if err != nil { return arrays, err } defer file.Close() decoder := json.NewDecoder(file) err = decoder.Decode(&arrays) return arrays, err } func LocathahNameMas(arr *LocathahArrays, swearFilter func(string) bool) string { rnd := rand.Intn(len(arr.Nm1)) rnd2 := rand.Intn(len(arr.Nm2)) rnd3 := rand.Intn(len(arr.Nm3)) rnd4 := rand.Intn(len(arr.Nm4)) rnd5 := rand.Intn(len(arr.Nm5)) for arr.Nm3[rnd3] == arr.Nm5[rnd5] || arr.Nm3[rnd3] == arr.Nm1[rnd] { rnd3 = rand.Intn(len(arr.Nm3)) } nMs := arr.Nm1[rnd] + arr.Nm2[rnd2] + arr.Nm3[rnd3] + arr.Nm4[rnd4] + arr.Nm5[rnd5] if swearFilter != nil && swearFilter(nMs) { return "" } return nMs } func GenerateLocathahNames(arr *LocathahArrays, swearFilter func(string) bool) []string { names := make([]string, 0, 10) for i := 0; i < 10; i++ { n := LocathahNameMas(arr, swearFilter) for n == "" { n = LocathahNameMas(arr, swearFilter) } names = append(names, n) } return names }