バイナリ コードの文字列と数値を受け取り、元の文字列のハミング距離内にあるすべての文字列を出力するプログラムを作成することになっています。私はすべてを行う関数を持っていますが、出力にはリスト内のリストがあります。これがなぜなのか理解しています - 関数は再帰的であり、可能な値のリストを返すことがあります。
問題は、完全な文字列を出力するように変更する方法がわからないことです。たとえば、文字列が "0000" でハミング距離が "2" の場合、["1['100', '010', '001']", "01['10', '01']" となります。 , "001['1']"]
しかし、私が欲しいのは:
1100
1010
1001
0110
0101
0011
コードは以下のとおりです。
def hamming(num, dist):
if dist == 0:
return num
else:
outputlist = list()
for item in range(len(num)):
if len(num[item:]) > dist - 1:
if num[item] == "0":
restoflist = hamming(num[item + 1:], dist - 1)
outputlist.append(num[:item] + "1" + str(restoflist))
else:
restoflist = hamming(num[item + 1:], dist - 1)
outputlist.append(num[:item] + "0" + str(restoflist))
return outputlist