mjai-silicaを修正した

mjai-silicaにはフリテンや役なしで和了しようとするという致命的なバグがあった。
長い間放置していたが、今回修正した。

上記のバグは明らかに致命的だが、プログラムの強さを測定する際には大した影響はないと考えていた。しかし、今回の修正を行いmjai-manueと対戦させた結果、mjai-manueに敗北してしまった。悲しい。

詳細

修正したと書いたが、実際にはフルスクラッチで書きなおした。なので、反則をしなくなった以外変更がないとは言い切れない(というか、微妙にアルゴリズムを変更した)し、エンバグしてしまってそのせいで敗北したという可能性も一応考えられる。
ただ、silicaの牌譜を目で追ったところ(約10戦くらい)、書いたつもりのプログラムと違う動作をしている場面は見つけられなかった。

ドラを考慮していないmanueに負けるというのはかなり考えにくいと思っているが、silicaも押し引きが超絶雑だったり、牌効率が微妙だったり、点棒状況を考慮していなかったりするので、そのせいで負けているのかなあと考えている。

具体的な結果は以下。東風100戦(manue2人、silica2人)で
rank: manue:2.316 [2.163, 2.487] silica:2.684 [2.519, 2.850]

追記; 2013-4-10
フリテン判定がバグってた…。自分がリーチしている場合、他家の打牌もフリテンになるわけだけど、そのタイミングが間違ってて、リーチ中はロンしない状態になってた。はぁ

現在、再び自動対戦中です。

追記; 2013-4-24
すっかり忘れていた…。
だいぶ良くなったけど負けてそうだったんだったと思います
追記; 2013-11-18
↑こんな何の価値もないつぶやきを残しやがって…>>過去の自分
manue(2012/10/18版) 2x vs silica(2013/4/11版) 2x
東風100戦
Average rank: manue:2.490 [2.343, 2.641] silica:2.510 [2.354, 2.682]
有意に劣っていたと記憶してたんですが気のせいだったのか…?
今から東南500戦仕掛けます
追記; 2013-11-22
まだ途中ですが…。
manue(2012/10/18版) 2x vs silica(2013/4/11版) 2x
東南337戦
Average rank: manue:2.515 [2.436, 2.598] silica:2.485 [2.399, 2.574]
こんないい勝負だった記憶ないんだけど(困惑)
追記; 2013-11-26
manue(2012/10/18版) 2x vs silica(2013/4/11版) 2x
東南500戦…のはずが492戦(Errorでgrepしたらなにか出ているのでおそらくsilicaのチョンボ。ううむ…。)
Average rank: manue:2.492 [2.422, 2.562] silica:2.508 [2.442, 2.580]
ほとんど差はない感じのようで…。本当に僕の記憶力はやばいっぽい。
今回のログ:
http://www3257ui.sakura.ne.jp/upload/mjai_server_log_20131118.log.gz (55M)