确定列表中的偶数位置并取出第二次出现

时间:2012-10-28 20:40:37

标签: prolog

我刚学了一个星期的prolog,我必须写一个prolog程序,它计算一个元素出现在偶数位置的列表L中的次数。

我试着弄清楚从上午12点到现在(上午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.如果没有倒退,你可以给我一些暗示吗?我会很感激的!

你能给我一些提示吗,我会全力以赴。

我现在不回复,因为我熬夜了,我为此道歉。 感谢您阅读我的问题。

1 个答案:

答案 0 :(得分:1)

你错过了一个非常简单的使用Prolog模式匹配:即匹配第二个元素只是忽略第一个

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

你可以将它作为你的作业的“构建块”,但它很简单,你真的可以更好地将它集成到你的工作中。在谓词的 head 中使用该模式。