0 と 1 だけで構成される、指定された長さの可能なすべての文字列を提供する関数が必要です。例えば:
spam(4)
私を取得する必要があります:
['0110', '0111', '0001', '0011', '0010', '0101', '0100', '1110', '1100', '1101', '1010', '1011', '1001', '1000']
仕事で使っitertools.permutations
てみました。それで、これが私がしたことです。
def getPerms(n):
perms = getCandidates(n)
res = []
for i in perms:
res.extend(permutations(i))
res = clean(res)
return res
def clean(ar):
res = []
for i in ar:
temp = ""
for j in i:
temp += j
res.append(temp)
return list(set(res))
def getCandidates(n):
res = []
for i in range(1, n):
res.append("1"*i + "0"*(n-i))
return res
しかし、これは恐ろしく非効率的で、入力として 10 でメモリ エラーが発生します。