Created
December 22, 2024 13:36
-
-
Save kyontan/0f5d1a54b51d0864ecf62fb1952e9bb5 to your computer and use it in GitHub Desktop.
ICTSC2024 2次予選 MNG ictsc-2024-problem-mng
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | |
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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= |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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