感谢您访问我的问题。
我希望程序输出需要条件的数字......
Ex)mid([15,2,30,4,12,3,18],10,20,L2) - > L2 = [15,12,18]
以下是我的代码。
mid(L1,0,0,[]).
mid([L|L1],Min,Max,[L|L2]) :- L>=Min, L=<Max, mid(L1,Min,Max,L2).
min([L|L1],Min,Max,[_|L2]) :- mid(L1,Min,Max,L2).
如果您有任何好的解决方案,请告诉我......
答案 0 :(得分:0)
mid([],_,_,[]).
mid([X|R], Min, Max, L) :-
(X >= Min, X =< Max -> L = [X|L1]; L = L1), mid(R, Min, Max, L1).
更新:基于您的代码的另一个答案。您的代码会导致不必要的回溯。您可以使用!
运算符阻止它:
mid([],_,_,[]).
mid([X|R], Min, Max, [X|L]) :-
X >= Min, X =< Max, !, mid(R, Min, Max, L).
mid([_|R], Min, Max, L) :- mid(R, Min, Max, L).