#!/usr/bin/ruby -Ku
# -*- encoding: utf-8 -*-
=begin
* 対戦表(わりとてきとう)
* 自 vs. 敵とした場合得られるポイント
=end
vs = {
"mm"=>0, "ml"=>5, "md"=>5, "ms"=>5, "mg"=>-20,
"lm"=>0, "ll"=>0, "ld"=>5, "ls"=>0, "lg"=>5,
"dm"=>0, "dl"=>0, "dd"=>0, "ds"=>5, "dg"=>5,
"sm"=>0, "sl"=>5, "sd"=>0, "ss"=>0, "sg"=>5,
"gm"=>20, "gl"=>0, "gd"=>0, "gs"=>0, "gg"=>0
}
# 勝率計算用
a =
{
"mmm"=>[0, 0], "mml"=>[0, 0], "mmd"=>[0, 0], "mms"=>[0, 0], "mmg"=>[0, 0],
"mlm"=>[0, 0], "mll"=>[0, 0], "mld"=>[0, 0], "mls"=>[0, 0], "mlg"=>[0, 0],
"mdm"=>[0, 0], "mdl"=>[0, 0], "mdd"=>[0, 0], "mds"=>[0, 0], "mdg"=>[0, 0],
"msm"=>[0, 0], "msl"=>[0, 0], "msd"=>[0, 0], "mss"=>[0, 0], "msg"=>[0, 0],
"mgm"=>[0, 0], "mgl"=>[0, 0], "mgd"=>[0, 0], "mgs"=>[0, 0], "mgg"=>[0, 0],
"lmm"=>[0, 0], "lml"=>[0, 0], "lmd"=>[0, 0], "lms"=>[0, 0], "lmg"=>[0, 0],
"llm"=>[0, 0], "lll"=>[0, 0], "lld"=>[0, 0], "lls"=>[0, 0], "llg"=>[0, 0],
"ldm"=>[0, 0], "ldl"=>[0, 0], "ldd"=>[0, 0], "lds"=>[0, 0], "ldg"=>[0, 0],
"lsm"=>[0, 0], "lsl"=>[0, 0], "lsd"=>[0, 0], "lss"=>[0, 0], "lsg"=>[0, 0],
"lgm"=>[0, 0], "lgl"=>[0, 0], "lgd"=>[0, 0], "lgs"=>[0, 0], "lgg"=>[0, 0],
"dmm"=>[0, 0], "dml"=>[0, 0], "dmd"=>[0, 0], "dms"=>[0, 0], "dmg"=>[0, 0],
"dlm"=>[0, 0], "dll"=>[0, 0], "dld"=>[0, 0], "dls"=>[0, 0], "dlg"=>[0, 0],
"ddm"=>[0, 0], "ddl"=>[0, 0], "ddd"=>[0, 0], "dds"=>[0, 0], "ddg"=>[0, 0],
"dsm"=>[0, 0], "dsl"=>[0, 0], "dsd"=>[0, 0], "dss"=>[0, 0], "dsg"=>[0, 0],
"dgm"=>[0, 0], "dgl"=>[0, 0], "dgd"=>[0, 0], "dgs"=>[0, 0], "dgg"=>[0, 0],
"smm"=>[0, 0], "sml"=>[0, 0], "smd"=>[0, 0], "sms"=>[0, 0], "smg"=>[0, 0],
"slm"=>[0, 0], "sll"=>[0, 0], "sld"=>[0, 0], "sls"=>[0, 0], "slg"=>[0, 0],
"sdm"=>[0, 0], "sdl"=>[0, 0], "sdd"=>[0, 0], "sds"=>[0, 0], "sdg"=>[0, 0],
"ssm"=>[0, 0], "ssl"=>[0, 0], "ssd"=>[0, 0], "sss"=>[0, 0], "ssg"=>[0, 0],
"sgm"=>[0, 0], "sgl"=>[0, 0], "sgd"=>[0, 0], "sgs"=>[0, 0], "sgg"=>[0, 0],
"gmm"=>[0, 0], "gml"=>[0, 0], "gmd"=>[0, 0], "gms"=>[0, 0], "gmg"=>[0, 0],
"glm"=>[0, 0], "gll"=>[0, 0], "gld"=>[0, 0], "gls"=>[0, 0], "glg"=>[0, 0],
"gdm"=>[0, 0], "gdl"=>[0, 0], "gdd"=>[0, 0], "gds"=>[0, 0], "gdg"=>[0, 0],
"gsm"=>[0, 0], "gsl"=>[0, 0], "gsd"=>[0, 0], "gss"=>[0, 0], "gsg"=>[0, 0],
"ggm"=>[0, 0], "ggl"=>[0, 0], "ggd"=>[0, 0], "ggs"=>[0, 0], "ggg"=>[0, 0]
}
# 乱択用リスト
list = []
# 乱択用リストを初期化しておく
{"gmm" => 1, "dmm" => 1, "smm" => 1, "mmd" => 1, "mlm" => 1,
"mgm" => 1, "mms" => 1, "mml" => 1, "lmm" => 1, "msm" => 1,
"mdm" => 1, "mld" => 1, "mss" => 1, "dms" => 1, "ddm" => 1,
"llm" => 1, "mll" => 1, "dml" => 1, "ldm" => 1, "mls" => 1,
"msl" => 1, "lsm" => 1, "dlm" => 1, "smd" => 1, "dmd" => 1,
"lmd" => 1, "mds" => 1, "mdd" => 1, "msd" => 1, "ssm" => 1,
"sms" => 1, "dsm" => 1, "slm" => 1, "sml" => 1, "lml" => 1,
"sdm" => 1, "lms" => 1, "mdl" => 1, "mmg" => 1, "gmd" => 1,
"gml" => 1, "gsm" => 1, "gms" => 1, "lgm" => 1, "sgm" => 1,
"glm" => 1, "dgm" => 1, "gdm" => 1, "mmm" => 1, "sdl" => 1,
"lsl" => 1, "sls" => 1, "ssd" => 1, "ddd" => 1, "lls" => 1,
"sld" => 1, "ssl" => 1, "dls" => 1, "dds" => 1, "lss" => 1,
"sds" => 1, "ddl" => 1, "sss" => 1, "dsl" => 1, "lld" => 1,
"lsd" => 1, "dsd" => 1, "lds" => 1, "sll" => 1, "lll" => 1,
"ldd" => 1, "sdd" => 1, "dss" => 1, "dld" => 1, "ldl" => 1,
"dll" => 1, "ggg" => 1, "lmg" => 1, "dmg" => 1, "mgs" => 1,
"smg" => 1, "mdg" => 1, "mgd" => 1, "mlg" => 1, "mgl" => 1,
"msg" => 1, "ggm" => 1, "gll" => 1, "dgs" => 1, "gsd" => 1,
"sgd" => 1, "gls" => 1, "llg" => 1, "dsg" => 1, "gdd" => 1,
"gdl" => 1, "ldg" => 1, "gsl" => 1, "gld" => 1, "lgs" => 1,
"dlg" => 1, "ssg" => 1, "slg" => 1, "dgd" => 1, "lsg" => 1,
"sgl" => 1, "sdg" => 1, "gds" => 1, "lgd" => 1, "ddg" => 1,
"sgs" => 1, "gss" => 1, "dgl" => 1, "lgl" => 1, "ggl" => 1,
"gmg" => 1, "dgg" => 1, "lgg" => 1, "glg" => 1, "ggd" => 1,
"gdg" => 1, "gsg" => 1, "sgg" => 1, "ggs" => 1, "mgg" => 1}.each{|k, v| v.times{list << k}}
10.times do
10000.times do
# 乱択して分母を増やす
a[o = list.sample][1] += 1
a[t = list.sample][1] += 1
# デスマ発生の場合
if vs[o[0] + t[0]] == 20 then
a[o][0] += 1
next
elsif vs[t[0] + o[0]] == 20 then
a[t][0] += 1
next
elsif vs[o[1] + t[1]] == 20 then
a[o][0] += 1
next
elsif vs[t[1] + o[1]] == 20 then
a[t][0] += 1
next
elsif vs[o[2] + t[2]] == 20 then
a[o][0] += 1
next
elsif vs[t[2] + o[2]] == 20 then
a[t][0] += 1
next
end
# 平和な場合
hoge = vs[o[0] + t[0]] + vs[o[1] + t[1]] + vs[o[2] + t[2]]
piyo = vs[t[0] + o[0]] + vs[t[1] + o[1]] + vs[t[2] + o[2]]
if hoge == piyo then
next
elsif hoge > piyo then
a[o][0] += 1
else
a[t][0] += 1
end
end
list = []
# 勝率ソート(降順)
b = a.sort{|l, r| r[1][0].to_f * l[1][1].to_f <=> l[1][0].to_f * r[1][1].to_f}
# 対戦結果
b.each.with_index(1){|k, l|
print " #{k[0]} : #{sprintf("%.2f\%", k[1][0].to_f * 100 / k[1][1].to_f)}"
print "\n" if l % 5 == 0}
print "\n"
# リストにどんどんブチ込む
b.each{|k, l| (l[0].to_f * 10000 / l[1].to_f).to_i.times{list << k}}
end
IyEvdXNyL2Jpbi9ydWJ5IC1LdQojIC0qLSBlbmNvZGluZzogdXRmLTggLSotCgo9YmVnaW4KKiDlr77miKbooago44KP44KK44Go44Gm44GN44Go44GGKQoqIOiHqiB2cy4g5pW144Go44GX44Gf5aC05ZCI5b6X44KJ44KM44KL44Od44Kk44Oz44OICj1lbmQKdnMgPSB7CgkibW0iPT4wLCAibWwiPT41LCAibWQiPT41LCAibXMiPT41LCAibWciPT4tMjAsCgkibG0iPT4wLCAibGwiPT4wLCAibGQiPT41LCAibHMiPT4wLCAibGciPT41LAoJImRtIj0+MCwgImRsIj0+MCwgImRkIj0+MCwgImRzIj0+NSwgImRnIj0+NSwKCSJzbSI9PjAsICJzbCI9PjUsICJzZCI9PjAsICJzcyI9PjAsICJzZyI9PjUsCgkiZ20iPT4yMCwgImdsIj0+MCwgImdkIj0+MCwgImdzIj0+MCwgImdnIj0+MAp9CgojIOWLneeOh+ioiOeul+eUqAphID0KewoJIm1tbSI9PlswLCAwXSwgIm1tbCI9PlswLCAwXSwgIm1tZCI9PlswLCAwXSwgIm1tcyI9PlswLCAwXSwgIm1tZyI9PlswLCAwXSwKCSJtbG0iPT5bMCwgMF0sICJtbGwiPT5bMCwgMF0sICJtbGQiPT5bMCwgMF0sICJtbHMiPT5bMCwgMF0sICJtbGciPT5bMCwgMF0sCgkibWRtIj0+WzAsIDBdLCAibWRsIj0+WzAsIDBdLCAibWRkIj0+WzAsIDBdLCAibWRzIj0+WzAsIDBdLCAibWRnIj0+WzAsIDBdLAoJIm1zbSI9PlswLCAwXSwgIm1zbCI9PlswLCAwXSwgIm1zZCI9PlswLCAwXSwgIm1zcyI9PlswLCAwXSwgIm1zZyI9PlswLCAwXSwKCSJtZ20iPT5bMCwgMF0sICJtZ2wiPT5bMCwgMF0sICJtZ2QiPT5bMCwgMF0sICJtZ3MiPT5bMCwgMF0sICJtZ2ciPT5bMCwgMF0sCgkibG1tIj0+WzAsIDBdLCAibG1sIj0+WzAsIDBdLCAibG1kIj0+WzAsIDBdLCAibG1zIj0+WzAsIDBdLCAibG1nIj0+WzAsIDBdLAoJImxsbSI9PlswLCAwXSwgImxsbCI9PlswLCAwXSwgImxsZCI9PlswLCAwXSwgImxscyI9PlswLCAwXSwgImxsZyI9PlswLCAwXSwKCSJsZG0iPT5bMCwgMF0sICJsZGwiPT5bMCwgMF0sICJsZGQiPT5bMCwgMF0sICJsZHMiPT5bMCwgMF0sICJsZGciPT5bMCwgMF0sCgkibHNtIj0+WzAsIDBdLCAibHNsIj0+WzAsIDBdLCAibHNkIj0+WzAsIDBdLCAibHNzIj0+WzAsIDBdLCAibHNnIj0+WzAsIDBdLAoJImxnbSI9PlswLCAwXSwgImxnbCI9PlswLCAwXSwgImxnZCI9PlswLCAwXSwgImxncyI9PlswLCAwXSwgImxnZyI9PlswLCAwXSwKCSJkbW0iPT5bMCwgMF0sICJkbWwiPT5bMCwgMF0sICJkbWQiPT5bMCwgMF0sICJkbXMiPT5bMCwgMF0sICJkbWciPT5bMCwgMF0sCgkiZGxtIj0+WzAsIDBdLCAiZGxsIj0+WzAsIDBdLCAiZGxkIj0+WzAsIDBdLCAiZGxzIj0+WzAsIDBdLCAiZGxnIj0+WzAsIDBdLAoJImRkbSI9PlswLCAwXSwgImRkbCI9PlswLCAwXSwgImRkZCI9PlswLCAwXSwgImRkcyI9PlswLCAwXSwgImRkZyI9PlswLCAwXSwKCSJkc20iPT5bMCwgMF0sICJkc2wiPT5bMCwgMF0sICJkc2QiPT5bMCwgMF0sICJkc3MiPT5bMCwgMF0sICJkc2ciPT5bMCwgMF0sCgkiZGdtIj0+WzAsIDBdLCAiZGdsIj0+WzAsIDBdLCAiZGdkIj0+WzAsIDBdLCAiZGdzIj0+WzAsIDBdLCAiZGdnIj0+WzAsIDBdLAoJInNtbSI9PlswLCAwXSwgInNtbCI9PlswLCAwXSwgInNtZCI9PlswLCAwXSwgInNtcyI9PlswLCAwXSwgInNtZyI9PlswLCAwXSwKCSJzbG0iPT5bMCwgMF0sICJzbGwiPT5bMCwgMF0sICJzbGQiPT5bMCwgMF0sICJzbHMiPT5bMCwgMF0sICJzbGciPT5bMCwgMF0sCgkic2RtIj0+WzAsIDBdLCAic2RsIj0+WzAsIDBdLCAic2RkIj0+WzAsIDBdLCAic2RzIj0+WzAsIDBdLCAic2RnIj0+WzAsIDBdLAoJInNzbSI9PlswLCAwXSwgInNzbCI9PlswLCAwXSwgInNzZCI9PlswLCAwXSwgInNzcyI9PlswLCAwXSwgInNzZyI9PlswLCAwXSwKCSJzZ20iPT5bMCwgMF0sICJzZ2wiPT5bMCwgMF0sICJzZ2QiPT5bMCwgMF0sICJzZ3MiPT5bMCwgMF0sICJzZ2ciPT5bMCwgMF0sCgkiZ21tIj0+WzAsIDBdLCAiZ21sIj0+WzAsIDBdLCAiZ21kIj0+WzAsIDBdLCAiZ21zIj0+WzAsIDBdLCAiZ21nIj0+WzAsIDBdLAoJImdsbSI9PlswLCAwXSwgImdsbCI9PlswLCAwXSwgImdsZCI9PlswLCAwXSwgImdscyI9PlswLCAwXSwgImdsZyI9PlswLCAwXSwKCSJnZG0iPT5bMCwgMF0sICJnZGwiPT5bMCwgMF0sICJnZGQiPT5bMCwgMF0sICJnZHMiPT5bMCwgMF0sICJnZGciPT5bMCwgMF0sCgkiZ3NtIj0+WzAsIDBdLCAiZ3NsIj0+WzAsIDBdLCAiZ3NkIj0+WzAsIDBdLCAiZ3NzIj0+WzAsIDBdLCAiZ3NnIj0+WzAsIDBdLAoJImdnbSI9PlswLCAwXSwgImdnbCI9PlswLCAwXSwgImdnZCI9PlswLCAwXSwgImdncyI9PlswLCAwXSwgImdnZyI9PlswLCAwXQp9CgojIOS5seaKnueUqOODquOCueODiApsaXN0ID0gW10KCiMg5Lmx5oqe55So44Oq44K544OI44KS5Yid5pyf5YyW44GX44Gm44GK44GPCnsiZ21tIiA9PiAxLCAiZG1tIiA9PiAxLCAic21tIiA9PiAxLCAibW1kIiA9PiAxLCAibWxtIiA9PiAxLAoibWdtIiA9PiAxLCAibW1zIiA9PiAxLCAibW1sIiA9PiAxLCAibG1tIiA9PiAxLCAibXNtIiA9PiAxLAoibWRtIiA9PiAxLCAibWxkIiA9PiAxLCAibXNzIiA9PiAxLCAiZG1zIiA9PiAxLCAiZGRtIiA9PiAxLAoibGxtIiA9PiAxLCAibWxsIiA9PiAxLCAiZG1sIiA9PiAxLCAibGRtIiA9PiAxLCAibWxzIiA9PiAxLAoibXNsIiA9PiAxLCAibHNtIiA9PiAxLCAiZGxtIiA9PiAxLCAic21kIiA9PiAxLCAiZG1kIiA9PiAxLAoibG1kIiA9PiAxLCAibWRzIiA9PiAxLCAibWRkIiA9PiAxLCAibXNkIiA9PiAxLCAic3NtIiA9PiAxLAoic21zIiA9PiAxLCAiZHNtIiA9PiAxLCAic2xtIiA9PiAxLCAic21sIiA9PiAxLCAibG1sIiA9PiAxLAoic2RtIiA9PiAxLCAibG1zIiA9PiAxLCAibWRsIiA9PiAxLCAibW1nIiA9PiAxLCAiZ21kIiA9PiAxLAoiZ21sIiA9PiAxLCAiZ3NtIiA9PiAxLCAiZ21zIiA9PiAxLCAibGdtIiA9PiAxLCAic2dtIiA9PiAxLAoiZ2xtIiA9PiAxLCAiZGdtIiA9PiAxLCAiZ2RtIiA9PiAxLCAibW1tIiA9PiAxLCAic2RsIiA9PiAxLAoibHNsIiA9PiAxLCAic2xzIiA9PiAxLCAic3NkIiA9PiAxLCAiZGRkIiA9PiAxLCAibGxzIiA9PiAxLAoic2xkIiA9PiAxLCAic3NsIiA9PiAxLCAiZGxzIiA9PiAxLCAiZGRzIiA9PiAxLCAibHNzIiA9PiAxLAoic2RzIiA9PiAxLCAiZGRsIiA9PiAxLCAic3NzIiA9PiAxLCAiZHNsIiA9PiAxLCAibGxkIiA9PiAxLAoibHNkIiA9PiAxLCAiZHNkIiA9PiAxLCAibGRzIiA9PiAxLCAic2xsIiA9PiAxLCAibGxsIiA9PiAxLAoibGRkIiA9PiAxLCAic2RkIiA9PiAxLCAiZHNzIiA9PiAxLCAiZGxkIiA9PiAxLCAibGRsIiA9PiAxLAoiZGxsIiA9PiAxLCAiZ2dnIiA9PiAxLCAibG1nIiA9PiAxLCAiZG1nIiA9PiAxLCAibWdzIiA9PiAxLAoic21nIiA9PiAxLCAibWRnIiA9PiAxLCAibWdkIiA9PiAxLCAibWxnIiA9PiAxLCAibWdsIiA9PiAxLAoibXNnIiA9PiAxLCAiZ2dtIiA9PiAxLCAiZ2xsIiA9PiAxLCAiZGdzIiA9PiAxLCAiZ3NkIiA9PiAxLAoic2dkIiA9PiAxLCAiZ2xzIiA9PiAxLCAibGxnIiA9PiAxLCAiZHNnIiA9PiAxLCAiZ2RkIiA9PiAxLAoiZ2RsIiA9PiAxLCAibGRnIiA9PiAxLCAiZ3NsIiA9PiAxLCAiZ2xkIiA9PiAxLCAibGdzIiA9PiAxLAoiZGxnIiA9PiAxLCAic3NnIiA9PiAxLCAic2xnIiA9PiAxLCAiZGdkIiA9PiAxLCAibHNnIiA9PiAxLAoic2dsIiA9PiAxLCAic2RnIiA9PiAxLCAiZ2RzIiA9PiAxLCAibGdkIiA9PiAxLCAiZGRnIiA9PiAxLAoic2dzIiA9PiAxLCAiZ3NzIiA9PiAxLCAiZGdsIiA9PiAxLCAibGdsIiA9PiAxLCAiZ2dsIiA9PiAxLAoiZ21nIiA9PiAxLCAiZGdnIiA9PiAxLCAibGdnIiA9PiAxLCAiZ2xnIiA9PiAxLCAiZ2dkIiA9PiAxLAoiZ2RnIiA9PiAxLCAiZ3NnIiA9PiAxLCAic2dnIiA9PiAxLCAiZ2dzIiA9PiAxLCAibWdnIiA9PiAxfS5lYWNoe3xrLCB2fCB2LnRpbWVze2xpc3QgPDwga319CgoxMC50aW1lcyBkbwoJMTAwMDAudGltZXMgZG8KCQkjIOS5seaKnuOBl+OBpuWIhuavjeOCkuWil+OChOOBmQoJCWFbbyA9IGxpc3Quc2FtcGxlXVsxXSArPSAxCgkJYVt0ID0gbGlzdC5zYW1wbGVdWzFdICs9IDEKCgkJIyDjg4fjgrnjg57nmbrnlJ/jga7loLTlkIgKCQlpZiB2c1tvWzBdICsgdFswXV0gPT0gMjAgdGhlbgoJCQlhW29dWzBdICs9IDEKCQkJbmV4dAoJCWVsc2lmIHZzW3RbMF0gKyBvWzBdXSA9PSAyMCB0aGVuCgkJCWFbdF1bMF0gKz0gMQoJCQluZXh0CgkJZWxzaWYgdnNbb1sxXSArIHRbMV1dID09IDIwIHRoZW4KCQkJYVtvXVswXSArPSAxCgkJCW5leHQKCQllbHNpZiB2c1t0WzFdICsgb1sxXV0gPT0gMjAgdGhlbgoJCQlhW3RdWzBdICs9IDEKCQkJbmV4dAoJCWVsc2lmIHZzW29bMl0gKyB0WzJdXSA9PSAyMCB0aGVuCgkJCWFbb11bMF0gKz0gMQoJCQluZXh0CgkJZWxzaWYgdnNbdFsyXSArIG9bMl1dID09IDIwIHRoZW4KCQkJYVt0XVswXSArPSAxCgkJCW5leHQKCQllbmQKCgkJIyDlubPlkozjgarloLTlkIgKCQlob2dlID0gdnNbb1swXSArIHRbMF1dICsgdnNbb1sxXSArIHRbMV1dICsgdnNbb1syXSArIHRbMl1dCgkJcGl5byA9IHZzW3RbMF0gKyBvWzBdXSArIHZzW3RbMV0gKyBvWzFdXSArIHZzW3RbMl0gKyBvWzJdXQoJCWlmIGhvZ2UgPT0gcGl5byB0aGVuCgkJCW5leHQKCQllbHNpZiBob2dlID4gcGl5byB0aGVuCgkJCWFbb11bMF0gKz0gMQoJCWVsc2UKCQkJYVt0XVswXSArPSAxCgkJZW5kCgllbmQKCWxpc3QgPSBbXQoKCSMg5Yud546H44K944O844OIKOmZjemghikKCWIgPSBhLnNvcnR7fGwsIHJ8IHJbMV1bMF0udG9fZiAqIGxbMV1bMV0udG9fZiA8PT4gbFsxXVswXS50b19mICogclsxXVsxXS50b19mfQoKCSMg5a++5oim57WQ5p6cCgliLmVhY2gud2l0aF9pbmRleCgxKXt8aywgbHwKCQlwcmludCAiICN7a1swXX0gOiAje3NwcmludGYoIiUuMmZcJSIsIGtbMV1bMF0udG9fZiAqIDEwMCAvIGtbMV1bMV0udG9fZil9IgoJCXByaW50ICJcbiIgaWYgbCAlIDUgPT0gMH0KCXByaW50ICJcbiIKCgkjIOODquOCueODiOOBq+OBqeOCk+OBqeOCk+ODluODgei+vOOCgAoJYi5lYWNoe3xrLCBsfCAobFswXS50b19mICogMTAwMDAgLyBsWzFdLnRvX2YpLnRvX2kudGltZXN7bGlzdCA8PCBrfX0KZW5kCg==