2013年4月27日土曜日

TopCoder SRM 577 Div2

TopCoderとは、TopCoder社の主催するオンライン参加型のプログラミングコンテストである。
その中の競技形式のひとつであるSRMは、与えられた問題に対して正確な答えを出力するプログラムを書くスピードを競うというものである。問題は単純なものが多いが、データ数が多かったり処理時間に制限があったりするので、いかに最適なアルゴリズムを考え、素早く実装できるかが勝負のカギとなる。


今回、久々にSRMに参加したのでレポートを書いてみたり。


2013年4月25日木曜日

Systema ver 0.6.1 更新

公開後、いくつかバグのご報告を頂きました。ご協力を頂いた方々に感謝を申し上げます。
以下の項目について修正いたしました。


ゲーム本体 ver 0.6.1
・役なし状態で和了ボタンが押せるバグ(押すとフリーズ)を修正
・南場にもかかわらず、南が役として認められなかったバグを修正
・ポンの直後にカンができるバグを修正


AIプログラム ver 1.1
・自風牌を正しく認識していなかったバグを修正。意味不明な喰い仕掛けをしなくなった。

2013年4月20日土曜日

とりあえず公開

あらかたバグを修正し、とりあえず麻雀できるレベルにはなったので公開します。
忘れていましたが、ソフト名はSystema(システマ)です。システム+麻雀みたいな。

ゲーム本体:ver 0.6
AIプログラム:ver1.0
https://sites.google.com/site/systemanopeji/


今は東風と半荘の対局ができるだけですが、少しずつ機能を加えていきたいと思っております。ご要望や不具合がございましたら遠慮なくコメントやtwitter(@takesho0214)までご連絡ください。


アイコン

ソフトウェアのアイコンを作ってみた。
「麻雀」「コンピュータ」「強そう」という印象が一目で与えられるものを目指したかったのだが…

2013年4月10日水曜日

鳴き対象牌強調表示の実装

前々から、「どの牌が鳴き対象なのか分かりづらい」と身内に不評だったので実装。
黄色の枠で対象牌が強調される。背景と混ざって見づらいので色は変えるかもしれない(というかそもそも背景の色が明るすぎる?)


これでかなり遊びやすくなったとの評価。ユーザにとって使いやすいインターフェース・動作になるように工夫することがソフト開発では重要だと認識させられる。

2013年4月8日月曜日

押し引き判断実装完了

最終順位予測ルーチンが完成したので、それを利用して押し引き判断を実装した。
前までのAIはリーチをかければすぐ降りてくれていたが、今回のは手がいい時は粘り強く押してくるようになった。それでいて、点数を多く持っているときは手が良くてもそう簡単に振り込んではくれない。総合的に見てかなり手強くなった印象がある。

現在はソフト公開に向けて説明書や免責事項などのドキュメントを作成している。ソフトのロゴとアイコンも欲しいのだがどうしよう…。その方面のセンスはほとんどないので困ったものである。

2013年3月25日月曜日

最終順位予測を用いた押し引き判断

現在開発している麻雀AIには、最終順位予測を用いた押し引き判断ルーチンを実装する予定である。麻雀は基本的に順位を目指すものであるから、押し引きも局単位の収入期待値ではなく最終順位によって評価されるべきだ、という発想である。
このルーチンを実現できれば、より正確な押し引きを行う打ち手になると思われる。また、各順位に重み付けを行うことで、トップ重視、平均順位重視、ラス回避重視など豊富な種類の打ち手を簡単に作れることが期待できる。さらに、このルーチンを高速化し打牌選択ルーチンに適用すれば、ラス目の時は高い手を作る、トップ目のときは速い手で流す、といった最終順位を考慮した手作りを行う打ち手を作ることができる…かもしれない。

このルーチンを実現するためには、「今の手からどの点数をどのくらいの確率であがれるか」という情報が必要なので、今はそれを木構造で表現するアルゴリズムを実装中である。

222567m2256p56s西北 から構築される木



詳しい中身については、もう少し考えをまとめてから。