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


Автор: func 6.5.2014, 20:45
Здравствуйте!
Нужно решить следующую задачу: Получить список, содержащий все элементы исходного списка, но по одному.

Есть решение похожей задачи: Проверить, что все элементы списка различны.

member(X, [X|_]) :- !.
member(X, [_|T]) :- member(X, T).

is_different([]) :- !.
is_different([H|T]) :- not(member(H,T)), is_different(T).

И попытки (неверные) сделать необходимую. Помогите, пожалуйста, исправить ошибку

member(X, [X|_]).
member(X, [_|T]) :- member(X, T).

newlist(_, []).
newlist([H|T], [H|N]) :- not(member(H,N)), newlist(T, N),!.
newlist([_,T],N) :- newlist(T,N).

Автор: rrrFer 23.5.2014, 12:30
Код

p([], L, L):-!.
p([H|T], L, R):-
 member(H, T), !, p(T, L, R); p(T, [H|L], R).

не првоерял, но должно работать. В качестве второго аргумент передавай пустой список.

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