麻雀の向聴数のアルゴリズム 清一色編 パターンの列挙

猫と麻雀 麻雀のプログラミング

清一色のパターン

清一色のパターンの列挙を行います。これは深さ優先探索で実現できます。

コード

import copy
cnt = 0
hands = []

def dfs_hand(n, m, a, hand):
    """
    n : int 深さ優先の深度
    m : int 手牌の最大枚数
    a : int 現在の手牌の枚数
    hand : list of int 各数字の枚数 0 ~ 4 
    """
    global hands
    if n == 9:
        if a == m: hands.append(copy.deepcopy(hand))
        return
    for i in range(5):
        if a + i <= m:
            hand[n] = i
            dfs_hand(n + 1, m, a + i, hand)
            hand[n] = 0
        else: return


dfs_hand(0, 14, 0,[0] * 9)

コメント

タイトルとURLをコピーしました