2012-10-28 15 views
0

我剛學過一週的prolog,我必須編寫一個prolog程序來計算列表L中出現在偶數位置的元素的次數。確定列表中的偶數位置並取出第二次發生

我試圖找出從12:00到現在(上午4點過去16小時)的問題並且失敗。

1.什麼我曾嘗試到現在就像是

count(_,[],0). 
count(E,[E|L],C):-!,count(E,L,C1),C is C1+1. 
count(E,[A|L],C):-atom(A),count(E,L,C),!. 
count(E,[A|L],C):-count(E,A,C1),count(E,L,C2),C is C1+C2. 

它只是可以算元素中的整個列表的發生是一個列表。

2,第二個是在列表

takeoutsecond occurence元素我曾嘗試到現在爲止好像但未能

takeout(A,[A|B],B). 
takeout(A,[B|C],[B|D]) :- takeout(A,C,D). 
takeoutSecond(A,[B|C],[B|D]):- takeoutSecond(A,C,D). 
takeoutSecond(A,[A|B],[A|C]):- takeout(A,B,C). 

3,可你給我一些暗示,如果不takeoutsecondlast逆轉?我會很感激!

你能給我一些提示,我會盡我所能。

我現在不會回覆,因爲我熬夜了,我爲此道歉。 感謝您閱讀我的問題。

回答

1

你錯過了一個非常簡單的使用Prolog的模式匹配:即,以匹配第二元素只是忽略第一

match_second(E, [_,E|Rest], Rest). 

您可以使用它作爲「積木」你的任務,但它是如此簡單你真的會更好地將它融入你的努力中。在謂詞的首部中使用該模式。

相關問題