У меня есть предикат, который должен сформировать список из списка, взяв в новый список только эти числа, которые находятся в определенном диапазоне. Предикат работает, но предположим, что я хочу получить список, не содержащий границ. Поэтому я меняю условие A >= L, A =< R
на A > L, A < R
, но тогда я получаю только «True», а Prolog ничего не выводит.Список в определенном диапазоне
Что может быть проблема?
Мой код:
range([], _, _, []).
range([A|L1], L, R, [A|L2]) :-
A>L,
A<R,
range(L1, L, R, L2).
range([A|L1], L, R, L2) :-
A=<L;
A>=R,
range(L1, L, R, L2).
Это то, что мероприятия по программе:
range([1,2,3,4,5], 1,4, X).
?- range([1,2,3,4,5,6,7,8,9,10], 1,3, X).
true .
Это то, что я хочу, чтобы выход:
?- range([1,2,3,4,5,6,7,8], 1, 5, X).
X = [2,3,4] .