Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Prolog-如何在指定限制内输出结果?_Prolog - Fatal编程技术网

Prolog-如何在指定限制内输出结果?

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]

谢谢你访问我的问题

我想让程序输出需要条件的数字

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],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).