我想要的東西等同於下面的代碼。 以下代碼會生成可能的手牌模式。如何實現受限組合迭代器?
from itertools import combinations
m = 13
n = 4
x = range(m) * n
y = 5
pattern = set()
for i in combinations(x, y):
pattern.add(tuple(sorted(i)))
我試着用itertools.combinations_with_replacement
。毫不奇怪,存在像(0,0,0,0,0)或(1,1,1,1,1)這樣的組合。但是卡片中沒有5個皇后和5個國王。所以我不想採取5件相同的事情。我如何實現受限組合迭代器。
from itertools import combinations_with_replacement
m = 13
n = 4
x = range(m)
y = 5
pattern = []
for i in combinations_with_replacement(x, y):
pattern.append(i)
我想要下面的代碼。
僞代碼:
m = 13
n = 4
x = range(m)
y = 5
pattern = []
for i in combinations_with_replacement_restricted(x, y, max=n):
pattern.append(i)
附:因爲我是英語學習者,請修改我的語法錯誤。
你是什麼意思最大= N? –
@fish_ball這意味着你不能畫出5個女王或5個國王等,但你最多可以畫4個女王或4個國王等。 –
@keimina你當前的代碼不會畫出同一張牌的5張。爲什麼你想要「替換」,這不是撲克手牌的處理方式。你能否更清楚你目前的代碼存在哪些問題? – jonrsharpe