Prolog:查找偶数将它们添加到列表中 [英] Prolog: Find even numbers add them on a list

查看:27
本文介绍了Prolog:查找偶数将它们添加到列表中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

写谓词 evenNumbers(L1, L2) 如果列表 L1 为真包含随机整数,列表 L2 包含来自 L1 的偶数整数.

Write predicate evenNumbers(L1, L2) which is true if the list L1 containing random integers and the list L2 contains even integers from L1.

例如:

?-evenNumbers ([2,1,-3,6,8,9], L2). 

»你的程序返回L2 = [2,6,8].

我的代码是:

    evenNumbers([],[]).
    evenNumbers([H|T],L):-
        integer(H),
        0 is H mod 2,
        append([H],L,L);
        evenNumbers(T,L).

推荐答案

你的代码有多个问题 append([H],L,L); 会停止递归并给你一个错误的列表你的 if-then-else 语句不正确.所以你可以写:

Your code has multiple issues append([H],L,L); will stop recursion and give you a wrong list also your if-then-else statement isn't right .So you could write:

 evenNumbers([],[]).
 evenNumbers([H|T],L1):-
        integer(H),
        (H mod 2 =:=0 -> L1=[H|T1],evenNumbers(T,T1);
        evenNumbers(T,L1) ).

示例:

?- evenNumbers([2,1,-3,6,8,9], L2).
L2 = [2, 6, 8].

另一种写法是:

evenNumbers(L1,L2):-findall(X,(member(X,L1), X mod 2=:=0),L2).

这篇关于Prolog:查找偶数将它们添加到列表中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆