entry="Where in the world is Carmen San Diego"
goal=["Where in the", "world is", "Carmen San Diego"]
"목표"목록의 구성원 인 "항목"내의 단어 덩어리를 검색하는 절차를 만들려고합니다. 이 하위 집합에서 단어 순서를 보존하고 싶습니다.역 추적/검색 정리 - 조합 단어 검색 파이썬에서
이것은 내가 지금까지 가지고있는 것입니다. 나는 이것을 어떻게 완성 할 것인지, 아니면 내가 올바른 방법으로 접근하고 있는지 확실하지 않다.
span=1
words = entry.split(" ")
initial_list= [" ".join(words[i:i+span]) for i in range(0, len(words), span)]
x=len(initial_list)
initial_string= " ".join(initial_list)
def backtrack(A,k):
if A in goal:
print
else:
while A not in goal:
k=k-1
A= " ".join(initial_list[0:k])
if A in goal:
print A
words=A.split(" ")
firstmatch= [" ".join(words[i:i+span]) for i in range(0, len(words), span)]
newList = []
for item in initial_list:
if item not in firstmatch:
newList.append(item)
nextchunk=" ".join(newList)
backtrack(initial_string,x)
출력은 지금까지 바로 이것이다 :
"Where in the"
원하는 출력 :
"Where in the"
"world is"
"Carmen San Diego"
나는 이것에 대한 적절한 알고리즘을 찾기 위해 노력하고 내 바퀴를 돌고 있었고, I 백 트랙킹 또는 검색 프 루닝이 필요하다고 생각합니다. 정말 잘 모르겠습니다. 이상적으로, 솔루션은 모든 "입력"및 "목표"목록에서 작동합니다. 모든 의견을 많이 보내 주시면 감사하겠습니다.
귀하의 예를 들어 당신이 뭘 하려는지 이해하는 데 특히 도움이되지 않습니다. 'goal = [ "ab", "dd", "c"]'를 가지고'entry = "abcabcdefdef"를 가지고 있다면 출력으로 기대할 수있는 것은 무엇입니까? –
@BrandonHumpert. 그 상황에서 저는 인쇄 할 것이 없다고 기대합니다. 전반적으로 이것은 프로토 타입입니다. 이 "목표"목록은 실제로 성공적인 JSON 쿼리의 본문을 나타냅니다. "entry"는 사용자가 입력 한 문자열입니다. 필자는 앞서 설명한 "백 트랙"방식으로이 사용자 항목을 여러 쿼리 문자열로 분리하려고합니다. 희망이 분명합니다. 도움을 주신 덕분에 – courtorder52