Panda Noir

JavaScript の限界を究めるブログでした。最近はいろんな分野を幅広めに書いてます。

麻雀の役判定アルゴリズム

作りました。七対子、国士以外の判定です(二つは簡単すぎますよね)。また、流し満貫ものぞきます。

パターン列挙アルゴリズム

与えられた手牌から作れる4面子1雀頭を可能な限り列挙するアルゴリズムです。

  1. 雀頭を作ります。
  2. 残りの牌で刻子を作ってみます。
  3. さらに残りで順子を作ります。
  4. 刻子の数を減らして、順子を作るパターンを試します。
  5. 雀頭を変えたパターンを試します。

以上のようにして全パターンを列挙します。槓子に関してはカンした時点で槓子となるので、列挙する中から省いておきました。また、ポン、チーも鳴いた時点で面子となり固定されるので、その2つも2. の「残りの牌」から除きます。

列挙したら

列挙したらあとはそれぞれのパターンの役を調べるだけですし、それは簡単ですよね。

コード

具体的なコードは書きません。理由としては牌のデータ構造によって異なってくるからです。

僕の作ったデータ構造でのコードは、新居のネットがつながったら、ここにあげておきます。

追記: つながったので載せておきます。
pandanoir/mahjongg