• ベストアンサー

麻雀のプログラムについて

ナノピコ教室という本を本屋で読んでいたら、麻雀の清一色の聴牌している牌を読み込んで、待ちを表示するプログラムを作成しなさい。という問題が載っていたので家に帰ってやってみたのですが、牌を読み込むところまでしかプログラムを作成できません。この後どうしたらよいか教えてください。プログラムはC言語で作っています。

質問者が選んだベストアンサー

  • ベストアンサー
  • sunasearch
  • ベストアンサー率35% (632/1788)
回答No.1

上がり形が4つの刻子と、1つの対子 (33332)ですから、この組み合わせを作ることを考えます。 また清一色ですから、 上がり牌は1-9の9通りです。 ので各牌を加えた14枚に対して、 上記の33332の形に分けて、 分けられた各部分が、それぞれ刻子と対子の条件を満たしているかを確認する。 といった感じでできると思います。 全探索すると大変であれば、 より効率の良いアルゴリズムを考えてみてください。

gakuseisan
質問者

お礼

プログラムを作成することができました。ありがとうございました。

その他の回答 (1)

noname#30727
noname#30727
回答No.2

#1さんの1枚加えるといやり方がいいと思います。 気をつけなければならないのは、2枚または3枚の取り出しかたで 11122223455566 この状態から x11x222x455566 最初に見つかった順子を抜き出すと手詰まりになる 11123555666777 この状態から xxx23555666777 最初に見つかった刻子を抜き出すと手詰まりになる だから、数字の小さい方から順子・刻子・対子(これは1度だけ)を取り出す3つに枝分かれさせ、それぞれの枝で再帰させて、3つうち1つでも全部取り出す事ができれば、追加したハイは待ちハイです。 再帰の練習問題だと思いますが、おまけとして、七対子かどうかも調べる必要がある事と、1枚足して、そのハイが5枚になる場合は待ちでは無いとする事も楽しめます。

関連するQ&A