уничтожение уровней в списках Prolog
Нужна помощь с написание предикатов на Prolog
Предикат destlev1 для уничтожения уровней в списке. Пример: исходный список [a,[b,[c]]], результирующий список [a,b,c]. Предикат destlev2 для уничтожения уровней в списке. Пример: исходный список [[[a],b],c], результирующий список [a,b,c].
Ответы (1 шт):
Автор решения: Anton Danilov
→ Ссылка
Достаточно одного предиката destlev/2 для обоих примеров
Вот решение для SWI Prolog:
destlev([], []).
destlev([ X | Xs ], Result):-
is_list(X)->
(
destlev(X, Xf),
destlev( Xs, Xfs ),
append(Xf, Xfs, Result)
)
;
(
destlev( Xs, Xfs ),
Result = [X | Xfs]
).