2013-02-17 75 views
1

任何人都可以幫我刪除列表的最後'e'嗎? 我有一個數據集:當它是單詞最後刪除'e'

lemma([c,h,a,s,e],[vb,t]). 
lemma([e,a,t],[vb,t]). 
lemma([l,i,k,e],[vb,t]). 
lemma([d,i,e],[vb,i]). 
lemma([s,n,e,e,z,e],[vb,i]). 

,我的代碼是:

q0(Token,[vb,_]) :- 
    lemma(Lemma,[vb,_]), 
    delete_last(Lemma,New_Lemma), 
    suffix(Sff), 
    append(New_Lemma,Sff,Token). 

delete_last(Lemma,New_Lemma) :- 
    append(New_Lemma,[_],Lemma). 

suffix([e,r]). 

到目前爲止我的代碼刪除列表,這是罰款,對於任何引理除了數據庫的最後一個元素引理[e,a,t]。我如何讓Prolog理解只在最終的單詞時刪除'e'?

任何建議,以幫助我開始這個問題將不勝感激。

+0

delete_last(引理,New_Lemma): - 追加(New_Lemma,[E],引理)。 – CapelliC 2013-02-18 00:09:43

+0

感謝您的建議,但我嘗試插入[e]代替[_],但是這會產生另一個問題,因爲代碼不會生成[e,a,t,er],而是會留下[e,a,t ,e,r]不在可能的答案中。 – 2013-02-18 01:34:55

回答

0

可以使用的狀態下,eliding引理 '最後用後綴' 第一

q0(Token,[vb,_]) :- 
    lemma(Lemma,[vb,_]), 
    suffix([X|Xs]), 
    ( last(Lemma, X) 
    -> append(Lemma, Xs, Token) 
    ; append(Lemma, [X|Xs], Token) 
    ). 

測試

?- q0(T, [vb,_]). 
T = [c, h, a, s, e, r] ; 
T = [e, a, t, e, r] ; 
T = [l, i, k, e, r] ; 
T = [d, i, e, r] ; 
T = [s, n, e, e, z, e, r]. 
+0

謝謝!這很有道理!我很感激幫助。 – 2013-02-18 14:19:21

相關問題