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

#11 アガリとシャンテン数を算出する

更新日:

Javascriptで遊ぶ麻雀小粒プログラミング
通常手とチートイツ・国士無双のアガリ判定とシャンテン数を算出するプログラムを使って、シャンテン数を算出する処理を完成させます。

プログラムの解説と実行

通常手のシャンテン数を算出する国士無双とチートイツのシャンテン数を算出するのプログラムを使えば、すべての手役のアガリとシャンテン数を求めることができます。

シャンテン数を求める手順

シャンテン数を求める手順はフローチャートのようになります。アガリまたはテンパイになったら処理を抜けて、それぞれの戻り値を出力します。通常手のシャンテン数まで処理が進んだ場合は、Math.min関数で各シャンテン数を比較して最小のシャンテン数を求めます。

シャンテン数を算出するフローチャート
シャンテン数を求めるフローチャート

リンク牌効率/牌理学習ツール




シャンテン数を求めてみよう

手牌を作ってプログラムの動作を確認してみましょう。操作は簡単です。牌をクリックすると下のパネル内に牌が追加されていくます。[シャンテン数を調べる]ボタンを押すとシャンテン数を調査する手順が表示されます。




手牌:0牌(最大入力数は14牌)
シャンテン数:テンパイは「0」、アガリは「-1」になります。
各手役のシャンテン数:テンパイは「0」、アガリは「-1」になります。

プログラムの修正や最新版情報は動作チェックとバグ取りをしっかりやろう~通常手編に掲載しています。ここで紹介しているプログラムが新しくなっていることがありますので、チェックしてみてください。

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

【閑話休題】十三不塔のシャンテン数

十三不塔とは、メンツ・トイツ・ターツが0状態のこの世で最悪の手牌です。ローカルルールだと役満になることもあります。では、どのくらい最悪なのか?抽象的な言葉ではよくわからないので実際のシャンテン数を出してみましょう。

十三不塔の手牌例
手役シャンテン数
国士無双9
チートイツ6
通常手8

結果は以上です。国士無双はヤオチュウ牌の枚数でシャンテン数が変わってきます。チートイツなら6シャンテンですが、通常手は8シャンテンですね。う~ん、かなりアガリはきびしそうです(笑)



JavaScriptソースコード

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

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

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

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

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

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

program_011.jsを開く
paiput.jsを開く
program_011.cssを開く

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

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

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

 

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

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

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

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

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