0
我差不多完成了我對特定程序的編碼。我只需要最後一塊的幫助。 該程序需要一個單詞並將一個字母更改爲更接近目標單詞。 被更改的單詞必須存在於我已經給出的字典中。遞歸函數中的兩個函數?
我的功能是這樣的:
def changeling(word,target,steps):
holderlist=[]
i=0
if steps==0 and word!=target:
return None
return holderlist
if len(word)!=len(target):
return None
if steps!=-1:
for items in wordList:
if len(items)==len(word):
i=0
if items!=word:
for length in items:
if i==1:
if items[1]==target[1] and items[0]==word[0] and items[2:]==word[2:]:
if items==target:
print "Target Achieved"
holderlist.append(items)
flatten_result(holderlist,target)
holderlist.append(changeling(items,target,steps-1))
elif i>0 and i<len(word)-1 and i!=1:
if items[i]==target[i] and items[0:i]==word[0:i] and items[i+1:]==word[i+1:]:
if items==target:
print "Target Achieved"
holderlist.append(items)
flatten_result(holderlist,target)
holderlist.append(changeling(items,target,steps-1))
elif i==0:
if items[0]==target[0] and items[1:]==word[1:]:
if items==target:
print "Target Achieved"
holderlist.append(items)
flatten_result(holderlist,target)
holderlist.append(changeling(items,target,steps-1))
elif i==len(word)-1:
if items[len(word)-1]==target[len(word)-1] and items[0:len(word)-1]==word[0:len(word)-1]:
if items==target:
print "Target Achieved"
holderlist.append(items)
holderlist.append(changeling(items,target,steps-1))
else:
return None
i+=1
return holderlist
我的助手功能是這樣的:
def flatten_result(nested_list, target):
if not nested_list:
return None
for word, children in zip(nested_list[::2], nested_list[1::2]):
if word == target:
return [word]
children_result = flatten_result(children, target)
if children_result:
return [word] + children_result
return None
的flatten_result功能允許我代表名單中列出作爲一個單一的名單,也將回溯通過我的程序。如何在轉換中實現平坦結果?我只能在python shell中做到這一點。
請正確對齊/更正代碼,如果步驟== 0和word!= target:返回None返回holderlist在塊上有兩個return語句。 – avasal 2012-03-27 06:00:55
從頭開始重寫。這是一個難以理解的混亂,這樣一個簡單的任務不應該需要太多的嵌套。 – wim 2012-03-27 06:10:32