Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Prolog > SWI Prolog


Автор: Berli 6.5.2015, 11:40
Ребята, помогите, пожалуйста, нужно решить 2 задачи в SWI Prolog с пояснениемъ

1. Не могли бы вы помочь в решении такой задачи: требуется определить предикат num_even (L,N), с помощью которого можно найти количество N четных числе в списке L.
Примерное решение, которое в SWI не рабботает.

class predicates
num_even:(E*,unsigned [out]).
clauses
num_even([X|L],N) :- X mod 2 = 0, !,num_even (L,M), N = M+1.
num_even([_|L],N) :- !,num_even([X|L],N).
num_even(_,0).

2. помощь в определении предиката subset(S1,S2), который будет работать, когда множество S1 является подмножеством S2. Использую Visual Prolog.

memb(_,[]) :- fail.
memb(H,[H|_]) :- !.
memb(H,[_|T]) :- memb(H,T).
 
subset([],_).
subset([H|T],Z) :- memb(H,Z), subset(T,Z).
Тоже выдаёт ошибку. 

Помогите, плз.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)