我刚学了一个星期的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.如果没有倒退,你可以给我一些暗示吗?我会很感激的!
你能给我一些提示吗,我会全力以赴。
我现在不回复,因为我熬夜了,我为此道歉。 感谢您阅读我的问题。
答案 0 :(得分:1)
match_second(E, [_,E|Rest], Rest).
你可以将它作为你的作业的“构建块”,但它很简单,你真的可以更好地将它集成到你的工作中。在谓词的 head 中使用该模式。