Prolog-如何在指定限制内输出结果?
谢谢你访问我的问题 我想让程序输出需要条件的数字 Ex)中间([15,2,30,4,12,3,18],10,20,L2)-->L2=[15,12,18] 下面是我的代码Prolog-如何在指定限制内输出结果?,prolog,Prolog,谢谢你访问我的问题 我想让程序输出需要条件的数字 Ex)中间([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). mid(L1,0,0,[])。 mid([L|L1]
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).
mid(L1,0,0,[])。
mid([L|L1],Min,Max,[L|L2]):-L>=Min,L=使用的代码变量/0
并不稳定:mid([1,3,5,7],2,6,Xs)
成功了Xs=[3,5]
,这是可以的,但是目标mid([1,3,5,7],2,6,[3])
,mid([1,3,5,7],2,6,[5])
,和mid([1,3,5,7],2,6,[])即使失败了,也成功了!代码变量使用/0
并不稳定:mid([1,3,5,7],2,6,Xs)
成功了Xs=[3,5]
,这是可以的,但是目标mid([1,3,5,7],2,6,[3])
,mid([1,3,5,7],2,6,[5])
,和mid([1,3,5,7],2,6,[])即使失败了,也成功了!
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).