アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (2件)

上がり形が4つの刻子と、1つの対子


(33332)ですから、この組み合わせを作ることを考えます。

また清一色ですから、
上がり牌は1-9の9通りです。

ので各牌を加えた14枚に対して、
上記の33332の形に分けて、
分けられた各部分が、それぞれ刻子と対子の条件を満たしているかを確認する。

といった感じでできると思います。

全探索すると大変であれば、
より効率の良いアルゴリズムを考えてみてください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/06/06 17:19

#1さんの1枚加えるといやり方がいいと思います。



気をつけなければならないのは、2枚または3枚の取り出しかたで

11122223455566 この状態から
x11x222x455566 最初に見つかった順子を抜き出すと手詰まりになる

11123555666777 この状態から
xxx23555666777 最初に見つかった刻子を抜き出すと手詰まりになる

だから、数字の小さい方から順子・刻子・対子(これは1度だけ)を取り出す3つに枝分かれさせ、それぞれの枝で再帰させて、3つうち1つでも全部取り出す事ができれば、追加したハイは待ちハイです。

再帰の練習問題だと思いますが、おまけとして、七対子かどうかも調べる必要がある事と、1枚足して、そのハイが5枚になる場合は待ちでは無いとする事も楽しめます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!