package generators import ( "encoding/json" "math/rand" "os" "strings" ) type ElfArrays 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"` Nm7 []string `json:"nm7"` Nm8 []string `json:"nm8"` Nm9 []string `json:"nm9"` Nm10 []string `json:"nm10"` Nm11 []string `json:"nm11"` Nm12 []string `json:"nm12"` Nm13 []string `json:"nm13"` Nm14 []string `json:"nm14"` Nm15 []string `json:"nm15"` Nm16 []string `json:"nm16"` Nm17 []string `json:"nm17"` Nm18 []string `json:"nm18"` } func LoadElfArrays(path string) (*ElfArrays, error) { file, err := os.Open(path) if err != nil { return nil, err } defer file.Close() var arr ElfArrays if err := json.NewDecoder(file).Decode(&arr); err != nil { return nil, err } return &arr, nil } func ElfNameFem(arr *ElfArrays, check func(string) bool) string { rnd := rand.Intn(len(arr.Nm3)) rnd2 := rand.Intn(len(arr.Nm4)) nMs := arr.Nm3[rnd] + arr.Nm4[rnd2] if check(strings.ToLower(nMs)) { return "" } return nMs } func ElfNameMas(arr *ElfArrays, check func(string) bool) string { rnd := rand.Intn(len(arr.Nm1)) rnd2 := rand.Intn(len(arr.Nm2)) nMs := arr.Nm1[rnd] + arr.Nm2[rnd2] if check(strings.ToLower(nMs)) { return "" } return nMs } func ElfNameSur(arr *ElfArrays, check func(string) bool) string { nTp := rand.Intn(8) rnd := rand.Intn(len(arr.Nm5)) rnd2 := rand.Intn(len(arr.Nm6)) rnd3 := rand.Intn(len(arr.Nm7)) rnd4 := rand.Intn(len(arr.Nm10)) rnd5 := rand.Intn(len(arr.Nm11)) var nMs string if nTp < 3 { for arr.Nm11[rnd5] == arr.Nm7[rnd3] && arr.Nm7[rnd3] == arr.Nm5[rnd] { rnd3 = rand.Intn(len(arr.Nm7)) } nMs = arr.Nm5[rnd] + arr.Nm6[rnd2] + arr.Nm7[rnd3] + arr.Nm10[rnd4] + arr.Nm11[rnd5] } else { rnd6 := rand.Intn(len(arr.Nm8)) rnd7 := rand.Intn(len(arr.Nm9)) for arr.Nm11[rnd5] == arr.Nm9[rnd6] && arr.Nm9[rnd6] == arr.Nm7[rnd3] { rnd7 = rand.Intn(len(arr.Nm9)) } if nTp < 6 { nMs = arr.Nm5[rnd] + arr.Nm6[rnd2] + arr.Nm7[rnd3] + arr.Nm8[rnd6] + arr.Nm9[rnd7] + arr.Nm10[rnd4] + arr.Nm11[rnd5] } else { rnd8 := rand.Intn(len(arr.Nm8)) rnd9 := rand.Intn(len(arr.Nm9)) for arr.Nm11[rnd5] == arr.Nm9[rnd6] && arr.Nm9[rnd6] == arr.Nm9[rnd9] { rnd7 = rand.Intn(len(arr.Nm9)) } for rnd9 < 8 && rnd7 < 8 { rnd7 = rand.Intn(len(arr.Nm9)) } if nTp == 6 { nMs = arr.Nm5[rnd] + arr.Nm6[rnd2] + arr.Nm7[rnd3] + arr.Nm8[rnd6] + arr.Nm9[rnd7] + arr.Nm8[rnd8] + arr.Nm9[rnd9] + arr.Nm10[rnd4] + arr.Nm11[rnd5] } else { nMs = arr.Nm5[rnd] + arr.Nm6[rnd2] + arr.Nm9[rnd7] + arr.Nm8[rnd8] + arr.Nm7[rnd3] + arr.Nm8[rnd6] + arr.Nm9[rnd9] + arr.Nm10[rnd4] + arr.Nm11[rnd5] } } } if check(strings.ToLower(nMs)) { return "" } return nMs } func ElfNameChild(arr *ElfArrays, check func(string) bool) string { nTp := rand.Intn(2) rnd := rand.Intn(len(arr.Nm14)) rnd2 := rand.Intn(len(arr.Nm15)) rnd3 := rand.Intn(len(arr.Nm18)) var nMs string if nTp == 0 { if arr.Nm14[rnd] == "" { for arr.Nm18[rnd3] == "" { rnd3 = rand.Intn(len(arr.Nm18)) } } if arr.Nm18[rnd3] == "" { rnd2 = rand.Intn(7) } nMs = arr.Nm14[rnd] + arr.Nm15[rnd2] + arr.Nm18[rnd3] } else { rnd4 := rand.Intn(len(arr.Nm16)) rnd5 := rand.Intn(len(arr.Nm17)) nMs = arr.Nm14[rnd] + arr.Nm15[rnd2] + arr.Nm16[rnd4] + arr.Nm17[rnd5] + arr.Nm18[rnd3] } if check(strings.ToLower(nMs)) { return "" } return nMs }