Skip to content

Instantly share code, notes, and snippets.

@kyontan
Created December 22, 2024 13:36
Show Gist options
  • Save kyontan/0f5d1a54b51d0864ecf62fb1952e9bb5 to your computer and use it in GitHub Desktop.
Save kyontan/0f5d1a54b51d0864ecf62fb1952e9bb5 to your computer and use it in GitHub Desktop.
ICTSC2024 2次予選 MNG ictsc-2024-problem-mng
module github.com/ictsc/ictsc-2024-problem-mng
go 1.22.5
require (
go.mongodb.org/mongo-driver v1.17.1
golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f
)
require (
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/golang/snappy v0.0.4 // indirect
github.com/klauspost/compress v1.13.6 // indirect
github.com/montanaflynn/stats v0.7.1 // indirect
github.com/xdg-go/pbkdf2 v1.0.0 // indirect
github.com/xdg-go/scram v1.1.2 // indirect
github.com/xdg-go/stringprep v1.0.4 // indirect
github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect
golang.org/x/crypto v0.26.0 // indirect
golang.org/x/sync v0.9.0 // indirect
golang.org/x/text v0.17.0 // indirect
)
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc=
github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
github.com/montanaflynn/stats v0.7.1 h1:etflOAAHORrCC44V+aR6Ftzort912ZU+YLiSTuV8eaE=
github.com/montanaflynn/stats v0.7.1/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow=
github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c=
github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
github.com/xdg-go/scram v1.1.2 h1:FHX5I5B4i4hKRVRBCFRxq1iQRej7WO3hhBuJf+UUySY=
github.com/xdg-go/scram v1.1.2/go.mod h1:RT/sEzTbU5y00aCK8UOx6R7YryM0iF1N2MOmC3kKLN4=
github.com/xdg-go/stringprep v1.0.4 h1:XLI/Ng3O1Atzq0oBs3TWm+5ZVgkq2aqdlvP9JtoZ6c8=
github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gijq1dTyGkM=
github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 h1:ilQV1hzziu+LLM3zUTJ0trRztfwgjqKnBWNtSRkbmwM=
github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78/go.mod h1:aL8wCCfTfSfmXjznFBSZNN13rSJjlIOI1fUNAtF7rmI=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
go.mongodb.org/mongo-driver v1.17.1 h1:Wic5cJIwJgSpBhe3lx3+/RybR5PiYRMpVFgO7cOHyIM=
go.mongodb.org/mongo-driver v1.17.1/go.mod h1:wwWm/+BuOddhcq3n68LKRmgk2wXzmF6s0SFOa0GINL4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw=
golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54=
golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo=
golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ=
golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc=
golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
package main
import (
"context"
"fmt"
"os"
"strings"
"time"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
// This is MongoDB client operates several things to make cluster problematic
func main() {
mongoHosts := []string{
"mng-01",
"mng-02",
"mng-03",
// "192.168.255.81",
// "192.168.255.82",
// "192.168.255.83",
}
// if MONGO_HOSTS is set
if hosts := os.Getenv("MONGO_HOSTS"); hosts != "" {
mongoHosts = strings.Split(hosts, ",")
}
rsConnectionString := fmt.Sprintf("mongodb://%s/ictsc?w=3", strings.Join(mongoHosts, ","))
// Connect to MongoDB
rsClient, err := NewMongoClient(rsConnectionString)
if err != nil {
panic(err)
}
defer rsClient.Disconnect(context.Background())
for {
CleanData(rsClient)
InsertData(rsClient, 100000)
DropHalfData(rsClient)
InsertData(rsClient, 100000)
DropHalfData(rsClient)
time.Sleep(1 * time.Second)
}
}
func InsertData(client *mongo.Client, n int) {
// Insert data in batch
collection := client.Database("ictsc").Collection("data")
inserted := 0
batchSize := 25000
for i := 0; i < n; i += batchSize {
records := make([]interface{}, 0, batchSize)
for j := 0; j < batchSize && (i+j) < n; j++ {
records = append(records, map[string]interface{}{
"i": i,
"j": j,
"x": (i+j)%2 == 0,
"y": (i+j)%3 == 0,
"n": getRandomJapaneseName(),
})
}
if len(records) > 0 {
_, err := collection.InsertMany(context.Background(), records)
inserted += len(records)
if err != nil {
panic(err)
}
}
}
}
func DropHalfData(client *mongo.Client) {
// remove data where x == false
collection := client.Database("ictsc").Collection("data")
_, err := collection.DeleteMany(context.Background(), map[string]interface{}{"x": false})
if err != nil {
panic(err)
}
_, err = collection.DeleteMany(context.Background(), map[string]interface{}{"y": false})
if err != nil {
panic(err)
}
}
func CleanData(client *mongo.Client) {
// drop collection
collection := client.Database("ictsc").Collection("data")
err := collection.Drop(context.Background())
if err != nil {
panic(err)
}
}
func NewMongoClient(connectionString string) (*mongo.Client, error) {
// Connect to MongoDB
client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI(connectionString))
if err != nil {
return nil, err
}
return client, nil
}
package main
import "golang.org/x/exp/rand"
var randomJapaneseNames = []map[string]string{
{"Romaji": "Yuichi Ikebe", "Kanji": "池辺 勇一", "Kana": "ゆういち いけべ"},
{"Romaji": "Hiroki Sunaga", "Kanji": "須永 大輝", "Kana": "ひろき すなが"},
{"Romaji": "Masao Yamamuro", "Kanji": "山室 正男", "Kana": "まさお やまむろ"},
{"Romaji": "Kenzo Furuichi", "Kanji": "古市 賢三", "Kana": "けんぞう ふるいち"},
{"Romaji": "Tomoya Namba", "Kanji": "南波 友也", "Kana": "ともや なんば"},
{"Romaji": "Shunya Asahina", "Kanji": "朝比奈 俊也", "Kana": "しゅんや あさひな"},
{"Romaji": "Satoshi Ishiwata", "Kanji": "石渡 暁", "Kana": "さとし いしわた"},
{"Romaji": "Hiro Kajita", "Kanji": "梶田 博", "Kana": "ひろ かじた"},
{"Romaji": "Yuji Kujo", "Kanji": "九条 雄司", "Kana": "ゆうじ くじょう"},
{"Romaji": "Takamasa Takeishi", "Kanji": "武石 貴正", "Kana": "たかまさ たけいし"},
{"Romaji": "Shinichi Yasuno", "Kanji": "安野 愼一", "Kana": "しんいち やすの"},
{"Romaji": "Fumiya Jono", "Kanji": "城野 文哉", "Kana": "ふみや じょうの"},
{"Romaji": "Joji Gonda", "Kanji": "権田 譲治", "Kana": "じょうじ ごんだ"},
{"Romaji": "Masāki Shirato", "Kanji": "白戸 正晃", "Kana": "まさあき しらと"},
{"Romaji": "Ren Yokozeki", "Kanji": "横関 廉", "Kana": "れん よこぜき"},
{"Romaji": "Toshikazu Fujisaka", "Kanji": "藤坂 俊和", "Kana": "としかず ふじさか"},
{"Romaji": "Yuzo Konuma", "Kanji": "小沼 有三", "Kana": "ゆうぞう こぬま"},
{"Romaji": "Kenichiro Odagawa", "Kanji": "小田川 謙一郎", "Kana": "けんいちろう おだがわ"},
{"Romaji": "Toshihito Fuchigami", "Kanji": "渕上 俊人", "Kana": "としひと ふちがみ"},
{"Romaji": "Keisuke Nunome", "Kanji": "布目 啓祐", "Kana": "けいすけ ぬのめ"},
{"Romaji": "Noriyuki osugi", "Kanji": "大杉 典行", "Kana": "のりゆき おおすぎ"},
{"Romaji": "Mirai Kashihara", "Kanji": "樫原 未来", "Kana": "みらい かしはら"},
{"Romaji": "Shinji Nose", "Kanji": "能勢 眞治", "Kana": "しんじ のせ"},
{"Romaji": "Hiroshi Hashizume", "Kanji": "橋詰 大士", "Kana": "ひろし はしづめ"},
{"Romaji": "Masatsugu Katori", "Kanji": "香取 正継", "Kana": "まさつぐ かとり"},
{"Romaji": "Shintaro Horio", "Kanji": "堀尾 晋太朗", "Kana": "しんたろう ほりお"},
{"Romaji": "Koji ogane", "Kanji": "大金 幸次", "Kana": "こうじ おおがね"},
{"Romaji": "Kazuma Yoneya", "Kanji": "米谷 和磨", "Kana": "かずま よねや"},
{"Romaji": "Kokoro Shinozuka", "Kanji": "篠塚 心", "Kana": "こころ しのづか"},
{"Romaji": "Hiroshi Hagio", "Kanji": "萩尾 弘史", "Kana": "ひろし はぎお"},
{"Romaji": "Kozo Uehara", "Kanji": "植原 耕造", "Kana": "こうぞう うえはら"},
{"Romaji": "Shizuo Sasajima", "Kanji": "笹島 静雄", "Kana": "しずお ささじま"},
{"Romaji": "Takashi Yunoki", "Kanji": "柚木 貴嗣", "Kana": "たかし ゆのき"},
{"Romaji": "Keizo Higaki", "Kanji": "桧垣 圭三", "Kana": "けいぞう ひがき"},
{"Romaji": "Shiro Toji", "Kanji": "田路 志朗", "Kana": "しろう とうじ"},
{"Romaji": "Masatoshi Mashimo", "Kanji": "眞下 昌利", "Kana": "まさとし ましも"},
{"Romaji": "Ryoji Hiro", "Kanji": "廣 亮司", "Kana": "りょうじ ひろ"},
{"Romaji": "Naotaka Yokotsuka", "Kanji": "横塚 尚孝", "Kana": "なおたか よこつか"},
{"Romaji": "Masanori Omoto", "Kanji": "尾本 雅徳", "Kana": "まさのり おもと"},
{"Romaji": "Masayuki Kamezaki", "Kanji": "亀崎 真行", "Kana": "まさゆき かめざき"},
{"Romaji": "Takumi Izawa", "Kanji": "伊沢 卓実", "Kana": "たくみ いざわ"},
{"Romaji": "Yutaka Shigeta", "Kanji": "繁田 ゆたか", "Kana": "ゆたか しげた"},
{"Romaji": "Masayoshi Maezawa", "Kanji": "前沢 正好", "Kana": "まさよし まえざわ"},
{"Romaji": "Kiminori Nishikawa", "Kanji": "西河 公則", "Kana": "きみのり にしかわ"},
{"Romaji": "Koji Okafuji", "Kanji": "岡藤 公治", "Kana": "こうじ おかふじ"},
{"Romaji": "Yusuke Shinonome", "Kanji": "東雲 勇祐", "Kana": "ゆうすけ しののめ"},
{"Romaji": "Yoshitada Isobe", "Kanji": "磯辺 義忠", "Kana": "よしただ いそべ"},
{"Romaji": "Yuji Motoyoshi", "Kanji": "元吉 佑治", "Kana": "ゆうじ もとよし"},
{"Romaji": "Yoji Wataya", "Kanji": "綿谷 洋次", "Kana": "ようじ わたや"},
{"Romaji": "Toshihiro Kuma", "Kanji": "熊 利洋", "Kana": "としひろ くま"},
{"Romaji": "Kaku Tainaka", "Kanji": "田井中 格", "Kana": "かく たいなか"},
{"Romaji": "Yasuhiro Yo", "Kanji": "姚 保博", "Kana": "やすひろ よう"},
{"Romaji": "Takahiro Habuka", "Kanji": "羽深 敬弘", "Kana": "たかひろ はぶか"},
{"Romaji": "Masanori Hamaoka", "Kanji": "浜岡 雅規", "Kana": "まさのり はまおか"},
{"Romaji": "Katsuichi Kemmoku", "Kanji": "見目 勝一", "Kana": "かついち けんもく"},
{"Romaji": "Yoshikazu Takishita", "Kanji": "瀧下 喜一", "Kana": "よしかず たきした"},
{"Romaji": "Masatsugu Komaba", "Kanji": "駒場 正次", "Kana": "まさつぐ こまば"},
{"Romaji": "Masāki Matsunaga", "Kanji": "松長 正顕", "Kana": "まさあき まつなが"},
{"Romaji": "Takato Ideguchi", "Kanji": "出口 貴人", "Kana": "たかと いでぐち"},
{"Romaji": "Nobumichi Yabu", "Kanji": "薮 信道", "Kana": "のぶみち やぶ"},
{"Romaji": "Yuri Futamura", "Kanji": "二村 悠里", "Kana": "ゆうり ふたむら"},
{"Romaji": "Sae Kawagishi", "Kanji": "川岸 沙恵", "Kana": "さえ かわぎし"},
{"Romaji": "Kasumi Ichimura", "Kanji": "市村 果純", "Kana": "かすみ いちむら"},
{"Romaji": "Sayaka Natsui", "Kanji": "夏井 沙耶佳", "Kana": "さやか なつい"},
{"Romaji": "Chie Onda", "Kanji": "恩田 智枝", "Kana": "ちえ おんだ"},
{"Romaji": "Yuka Takei", "Kanji": "武居 優華", "Kana": "ゆうか たけい"},
{"Romaji": "Haruka Nagakura", "Kanji": "永倉 晴佳", "Kana": "はるか ながくら"},
{"Romaji": "Yumi Kanzaki", "Kanji": "神崎 由弥", "Kana": "ゆみ かんざき"},
{"Romaji": "Marie Toriyama", "Kanji": "鳥山 万里江", "Kana": "まりえ とりやま"},
{"Romaji": "Miyu Suga", "Kanji": "須賀 未侑", "Kana": "みゆ すが"},
{"Romaji": "Kasumi Yasu", "Kanji": "安 佳寿美", "Kana": "かすみ やす"},
{"Romaji": "Nanako Kurozumi", "Kanji": "黒住 奈菜子", "Kana": "ななこ くろずみ"},
{"Romaji": "Yumie Shirasu", "Kanji": "白須 弓恵", "Kana": "ゆみえ しらす"},
{"Romaji": "Tetsuko Kanno", "Kanji": "管野 哲子", "Kana": "てつこ かんの"},
{"Romaji": "Misao Masago", "Kanji": "真砂 美佐緒", "Kana": "みさお まさご"},
{"Romaji": "Rei Koto", "Kanji": "古藤 澪", "Kana": "れい ことう"},
{"Romaji": "Sayaka Maegawa", "Kanji": "前川 沙夜香", "Kana": "さやか まえがわ"},
{"Romaji": "Tomoka Takeoka", "Kanji": "武岡 智佳", "Kana": "ともか たけおか"},
{"Romaji": "Shuri Kagayama", "Kanji": "加賀山 朱里", "Kana": "しゅり かがやま"},
{"Romaji": "Haruka Shirakawa", "Kanji": "白河 遥加", "Kana": "はるか しらかわ"},
{"Romaji": "Ryoko Tomari", "Kanji": "泊 怜子", "Kana": "りょうこ とまり"},
{"Romaji": "Momona Shingaki", "Kanji": "新垣 桃奈", "Kana": "ももな しんがき"},
{"Romaji": "Minori Furusho", "Kanji": "古庄 実莉", "Kana": "みのり ふるしょう"},
{"Romaji": "Yuko Sugioka", "Kanji": "杉岡 遊子", "Kana": "ゆうこ すぎおか"},
{"Romaji": "Rena Kitagaki", "Kanji": "北垣 玲那", "Kana": "れな きたがき"},
{"Romaji": "Naomi Arasaki", "Kanji": "新崎 ナオミ", "Kana": "なおみ あらさき"},
{"Romaji": "Yoshika Takada", "Kanji": "髙田 良佳", "Kana": "よしか たかだ"},
{"Romaji": "Natsuka Murotani", "Kanji": "室谷 夏香", "Kana": "なつか むろたに"},
{"Romaji": "Arisa Ro", "Kanji": "呂 亜莉紗", "Kana": "ありさ ろ"},
{"Romaji": "Tan Hirobe", "Kanji": "廣部 丹", "Kana": "たん ひろべ"},
{"Romaji": "Sayaka Takeoka", "Kanji": "竹岡 涼香", "Kana": "さやか たけおか"},
{"Romaji": "Eri Sawano", "Kanji": "沢野 瑛理", "Kana": "えり さわの"},
{"Romaji": "Serina Izawa", "Kanji": "井沢 瀬里奈", "Kana": "せりな いざわ"},
{"Romaji": "Marina Yagihashi", "Kanji": "八木橋 真璃奈", "Kana": "まりな やぎはし"},
{"Romaji": "Minami Kobari", "Kanji": "小針 陽美", "Kana": "みなみ こばり"},
{"Romaji": "Honami Kusuki", "Kanji": "楠木 帆南", "Kana": "ほなみ くすき"},
{"Romaji": "Kana Shioyama", "Kanji": "塩山 果南", "Kana": "かな しおやま"},
{"Romaji": "Yoshie Itayama", "Kanji": "板山 美絵", "Kana": "よしえ いたやま"},
{"Romaji": "Noriko Sunakawa", "Kanji": "砂川 令子", "Kana": "のりこ すなかわ"},
{"Romaji": "Midori Kusunoki", "Kanji": "楠木 翠里", "Kana": "みどり くすのき"},
{"Romaji": "Himawari Terabayashi", "Kanji": "寺林 向日葵", "Kana": "ひまわり てらばやし"},
{"Romaji": "Yuka Hosogai", "Kanji": "細貝 夕夏", "Kana": "ゆうか ほそがい"},
{"Romaji": "Fumiyo Kagami", "Kanji": "加賀美 典代", "Kana": "ふみよ かがみ"},
{"Romaji": "Reina Sunaga", "Kanji": "須長 鈴菜", "Kana": "れいな すなが"},
{"Romaji": "Mai Sakazume", "Kanji": "坂爪 麻維", "Kana": "まい さかづめ"},
{"Romaji": "Hanae Tatsuta", "Kanji": "龍田 英絵", "Kana": "はなえ たつた"},
{"Romaji": "Nori Furusawa", "Kanji": "古沢 乃梨", "Kana": "のり ふるさわ"},
{"Romaji": "Hana Nagisa", "Kanji": "渚 ハナ", "Kana": "はな なぎさ"},
{"Romaji": "Yuka Sakumoto", "Kanji": "佐久本 侑華", "Kana": "ゆか さくもと"},
{"Romaji": "Mayuko Sakon", "Kanji": "左近 真弓子", "Kana": "まゆこ さこん"},
{"Romaji": "Eimi Ishio", "Kanji": "石尾 詠美", "Kana": "えいみ いしお"},
{"Romaji": "Marie Miyairi", "Kanji": "宮入 万里枝", "Kana": "まりえ みやいり"},
{"Romaji": "Chiaki Togawa", "Kanji": "外川 知晶", "Kana": "ちあき とがわ"},
{"Romaji": "Tomomi Murashita", "Kanji": "村下 朋見", "Kana": "ともみ むらした"},
{"Romaji": "Tokiyo Ikuno", "Kanji": "生野 時代", "Kana": "ときよ いくの"},
{"Romaji": "Misono Nanami", "Kanji": "七海 美園", "Kana": "みその ななみ"},
{"Romaji": "Rie Jojima", "Kanji": "城島 梨瑛", "Kana": "りえ じょうじま"},
{"Romaji": "Yuri Norimatsu", "Kanji": "乗松 有李", "Kana": "ゆり のりまつ"},
{"Romaji": "Yukie Haruguchi", "Kanji": "春口 由紀絵", "Kana": "ゆきえ はるぐち"},
{"Romaji": "Tomoyo Hombo", "Kanji": "本坊 智予", "Kana": "ともよ ほんぼう"},
}
func getRandomJapaneseName() map[string]string {
return randomJapaneseNames[rand.Intn(len(randomJapaneseNames))]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment