2015-10-29 22 views
1

我试图从列表中获取10到40(含)之间的所有数字,并输出到另一个列表。到目前为止,我的代码类的作品,但不会产生预期的结果。问题在于我不能使用系统谓词。(Prolog)从列表中获取范围内的数字

rangeTenForty([], List2). 
rangeTenForty([H|T], List2) :- H >= 10, T =< 40, rangeTenForty(T, List2). 
rangeTenForty([H|T], List2) :- rangeTenForty(T, List2). 

几个条件:

?- rangeTenForty([400, 13, 20, 50], X).返回答案X = [13,20],查询

?- rangeTenForty([100, 5, 77], X).返回答案X = [],但查询

?- rangeTenForty([12,25,2004], [12,2004]).必须返回答案编号。

任何帮助真的真的很感激。非常感谢。

回答

2

你需要纠正一些事情。

rangeTenForty([], []). 
rangeTenForty([H|T], [H|L]):- H >= 10, H =< 40, rangeTenForty(T, L). 
rangeTenForty([H|T], L):- (H <10;H> 40), rangeTenForty(T, L).