如何编写一个prolog语句来从列表中删除每个偶数元素

时间:2012-11-29 21:40:17

标签: prolog

我想写一个prolog语句来从列表中删除每个偶数订单元素

输入:[a,b,c,d,e] 输出:[a,c,e]

任何人都可以帮助我,我怎么能写这个prolog声明?

1 个答案:

答案 0 :(得分:2)

这是我解决问题的方法。

remove_even_order([],[]). %this line says if I somehow get to an empty list the result I should return is an empty list 
remove_even_order([Head_ODD|[]],[Head_ODD]). 
remove_even_order([Head_ODD,Head_EVEN|Tail],[Head_ODD|RezultTail]) :- remove_even_order(Tail,RezultTail). 

这个问题很简单,但是如果你想要我,我会为你评论每一行。

以下是您要求的评论:

第一行: 这句话说如果我以某种方式进入一个空列表,我应该返回的结果是一个空列表

第二行:这里我们说如果一个列表只包含一个元素(Head_ODD),那么结果列表应仅由该头部组成

第三行:如果我们的列表在结果列表中有2个或更多元素(Head_ODD,HEAD_EVEN + Tail),我应该只放置HEAD_ODD,并尝试递归地解决其余的Tail < / p>