У меня есть код Пролога, и я хотел бы иметь возможность пропустить добавление элемента в список результатов, если произведение X и Y больше определенного значения. Есть идеи, как бы я это сделал?
e.g.
if Product > 10
Код, который у меня есть
make_quads(_,[],[]).
make_quads(X,[Y|TAIL],[[X,Y,Sum,Product]|Result]):-
make_quads(X,TAIL,Result),
Product is X * Y,
Product > 2,
Sum is X + Y.
Функция вызывается следующим образом:
?- make_quads(5, [1,2,3,4,5,6], X).
Это даст следующий результат:
X = [[5, 1, 6, 5], [5, 2, 7, 10], [5, 3, 8, 15], [5, 4, 9, 20], [5, 5, 10, 25], [5, 6, 11|...]]
Я пробовал что-то вроде следующего, но SWI-Prolog возвращает false, как только я вызываю функцию
make_quads(_,[],[]).
make_quads(X,[Y|TAIL],[[X,Y,Sum,Product]|Result]):-
make_quads(X,TAIL,Result),
Product is X * Y,
Product > 20, % I need to skip here
% Else continue running
Sum is X + Y.