Files
2025-08-01 00:15:34 +01:00

60 lines
1.4 KiB
Go

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
}