에게 당신을 작동하는 것 같다 작성할 수
final_kthWords(L,K,Outlist):-
kthWords(L,K,L1),
reverse(L1,[_|T]),
reverse(T,Outlist).
kthWords([],_,[]):-!.
kthWords(L,K,L1):-
find_word(L,Word,L2),
length(Word,N),
(N=:=K-> append(Word,[' '|T],L1),kthWords(L2,K,T);
kthWords(L2,K,L1)).
find_word([],[],[]).
find_word([H|T],[H|T1],L):-dif(H,' '),find_word(T,T1,L).
find_word([H|T],[],T):- H = ' '.
이 kthWords/3
통화 단어를 찾아 find_word/2
마지막 kthWords
출력을 반환하는 경우 목록에 추가되지만 끝에는 ' '
이 추가됩니다. final_kthWords(L,K,Outlist)/3
목록의 마지막에 추가 ' '
을 제거하고 수행하고 오른쪽 목록을 반환하는 유일한 것은 : 반대없이
?- final_kthWords([w,o,r,d,1,' ',w,r,d,' ',w,o,r,d,2], 5, X).
X = [w, o, r, d, 1, ' ', w, o, r, d, 2] ;
false.
이것은 나에게 꽤 좋은 것 같습니다. thx :) –
도움이 된 것을 기쁘게 생각합니다 !!! – coder