推定:
4 文字 (a、b、c、d) のみが使用されます
4文字の出現(> = 0)で構成される辞書があるとします
d = {"a":1, "b":2, "c":1, "d":3}
そして、「ステップ」番号が与えられます。
「ステップ」数の出現減算を考慮して、可能なすべての辞書を見つけたいと思います。
例えば
# given the above dictionary and a steps of 2
moo = {"a":1, "b":1, "c":1, "d":2}
# moo is a possibility because I simply took away 1 b and 1 d
# how do I find all the possibilities? (note: occurrences cannot be negative)
編集:正確に2つのステップのようにステップ
注: すべての "moo" を検索したい、または参照辞書といくつかのステップを指定して可能なすべての辞書を検索したい。2 つの辞書が手順の要件を満たしているかどうかをテストすることは気にしません。
この問題を解決するために、いくつかの再帰コードを思いついたと思います。
def genDict(d, steps):
if steps == 0:
return [d]
dList = []
for key, value in d.items():
if value > 0:
temp = dict(d)
temp[key] = value -1
dList += genDict(temp, steps-1)
return dList
誰もメモリを占有しない非再帰的なソリューションを手に入れましたか?