(序言)从列表中获取范围内的数字
(Prolog) Get numbers within a range from a list
我试图从列表中获取 10 到 40(含)之间的所有数字,并输出到另一个列表。到目前为止,我的代码可以正常工作,但没有产生预期的结果。问题是我不能使用系统谓词。
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).
returns 答案 X = [13, 20], 一个查询
?- rangeTenForty([100, 5, 77], X).
returns 答案 X = [], 但查询
?- rangeTenForty([12,25,2004], [12,2004]).
必须return答案编号
非常感谢任何帮助。非常感谢。
您需要更正一些问题。
rangeTenForty([], []).
rangeTenForty([H|T], [H|L]):- H >= 10, H =< 40, rangeTenForty(T, L).
rangeTenForty([H|T], L):- (H < 10;H > 40), rangeTenForty(T, L).
我试图从列表中获取 10 到 40(含)之间的所有数字,并输出到另一个列表。到目前为止,我的代码可以正常工作,但没有产生预期的结果。问题是我不能使用系统谓词。
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).
returns 答案 X = [13, 20], 一个查询
?- rangeTenForty([100, 5, 77], X).
returns 答案 X = [], 但查询
?- rangeTenForty([12,25,2004], [12,2004]).
必须return答案编号
非常感谢任何帮助。非常感谢。
您需要更正一些问题。
rangeTenForty([], []).
rangeTenForty([H|T], [H|L]):- H >= 10, H =< 40, rangeTenForty(T, L).
rangeTenForty([H|T], L):- (H < 10;H > 40), rangeTenForty(T, L).