シャンテン数 小粒プログラミング

#13 動作チェックとバグ取りをしっかりやろう~通常手編

更新日:

Javascriptで遊ぶ麻雀小粒プログラミング
麻雀プログラムの動作チェックは牌画を表示させることで格段に作業効率が向上するというお話です。

動作チェックとバグ取りをしっかりやろう

完成したと思ったプログラムでも思わぬバグが潜んでいることがあります。一見正常に動いていても正しい結果が返ってこないこともあります。たとえば、シャンテンチェックプログラムにも次のような不具合が残っています。なお、これら不具合は現在は解決済です(2015/03/18現在)

不具合その1~手牌にカンツがあるケース

雀頭で抜き出した残り2枚がメンツ候補としてカウントされたり、コーツで抜き出した残り1枚が単騎待ち牌になったりします。したがって正確なシャンテン数が算出されません。

雀頭が無くカンツがあるケース
雀頭が無くカンツがあるケース
雀頭とメンツ候補のトイツが同種牌になってしまう
雀頭とメンツ候補のトイツが同種牌になってしまう(解決済み)

不具合その2~メンツがターツ扱いになる

抜き出し方でメンツがターツ扱いになるパターンがあるのは当然なのですが、メンツとして認識されるパターンが出現しないのは深刻です。同じく、このケースも正確なシャンテン数を得ることができません。

メンツが正しく認識されないケース
メンツが正しく認識されないケース
メンツがターツと認識される(解決済み)
メンツがターツと認識される(解決済み)
修正履歴 ~2015/12/13
  • 赤ドラに対応
  • 手牌入力操作の改善
  • 赤ドラがリセットされない不具合を修正
  • 同種牌のシャンポン待ちができないようにした
  • 5枚目の単騎待ちができないようにした
  • コードを大幅に見直し修正。2015年4月3日現在
  • シュンツの抜き方を大幅に見直し修正。2015年12月01日現在

再帰呼び出しで組み直したプログラムも紹介しています。シュンツ抜き取り漏れが解決しています。ご参考ください。通常手のアガリとシャンテン数を算出する~再帰呼び出し版




動作チェックプログラムの実行

抜き出しパターンは手牌でも10通り以上、一色手になると50回以上の抜き出しパターンが現れることがあります。ここから最適化されたパターンを探しだすのは非常に困難です。シャンテン数が合っていてもそれが正しいのかを見極めるのは難しいです。というわけで、抜き出しパターンを牌画で視覚化して見やすくなるようにしてみました。作業効率が飛躍的に向上しました。実際に運用した感想です。おかげで沢山のバグが見つかり、プログラムの見直しの機会を得ることができました(笑)

実行してみよう

今回は通常手のアガリとシャンテン数をチェックするプログラムの動作チェックをします。牌画をクリックして手牌を作り、[動作チェックする]ボタンを押してシャンテン数と抜き出しパターンを出力します。以上です。

今後の展望

プログラムは試行回数を減らしたりコードをスッキリさせるなど、見直す必要があると思います。今後も新しい不具合が見つかるかもしれません。チェックを重ねてより良いプログラムを公開できるように努めるつもりです。




手牌:0牌(最大入力数は14牌) ※任意の牌をクリックして消すことができます。
シャンテン数:テンパイは「0」、アガリは「-1」になります。
メンツ等の抜き出しパターン:0



JavaScriptソースコード

本記事で紹介したサンプルプログラムをダウンロードできます。

ダウンロードをする前にお読みください

  • サイトで紹介している記事の内容や公開しているプログラムの動作は100%保障するものではありません。
  • 当プログラム使用による如何なる不具合やトラブル、損害の責任も負いかねます。
  • 当プログラムは断り無く内容が変わることがあります。
  • 当プログラムを別サイトで配布することは禁止します。
  • サポートはいたしません。
  • 自己責任にてご利用くださいませ。

以上をご確認の上、プログラムのダウンロードをお願いいたします。

サンプルプログラムのソースコード

ソースコードは折りたたんであります。[+]を押すと、折りたたまれたソースコードが開きます。[-]を押すと、コードは折りたたまれます。

program_013.jsを開く
paiput2.jsを開く
program_013.cssを開く

おすすめレンタルサーバー

エックスサーバー|高速・高機能レンタルサーバー

オールSSDの快適ハイスペック環境」「国内管理、大容量バックボーン」「独自SSLが無料」「FastCGIなどの高速化機能」「最新のPHP7を実装」など、高機能・高コストパフォーマンスなレンタルサーバーです。※当サイトも「エックスサーバー」で運用しています。

 

独自ドメインプレゼントキャンペーン情報

キャンペーン期間中にサーバーアカウントを契約すると、独自ドメインが1つもらえます。しかも、更新料も無料。運用コストを軽減します。

期間は、2017年10月16日より2017年11月30日まで、お見逃しなく。

-シャンテン数, 小粒プログラミング
-,

Copyright© 麻雀ツール点数計算ラボ , 2017 All Rights Reserved.