| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Prolog > Удалить все вхождения из списка и подсписков |
| Автор: boobie 17.4.2015, 13:14 | ||||||||
| Всем привет! Пытаюсь решить задачу. Напишите предикат p(+V, +X, -L) - истинный тогда и только тогда, когда список L получается из списка V после удаления всех вхождений X на всех уровнях, например, p([1, [2, 3, [1]], [3, 1]], 1, [[2, 3, []], [3]]) - истина. Написал алгоритм удаления из списка всех элементов, совпадающих с Х.
Видел реализацию короче, но она для меня менее понятна, поэтому есть add1 для сбора списка. Делаем запрос. Получаем:
Вложенный список он не обрабатывает, он считает его элементом.
Пытаюсь заставить его пробегать и по вложенным спискам:
Если это решу, то можно будет добавлять уже "p(+V, +X, -L)". Как это доделать? |
| Автор: boobie 21.4.2015, 13:41 | ||
Сделал... Некрасиво, зато работает. Может, кому-нибудь пригодится.
|
| Автор: Berli 2.5.2015, 13:16 |
| Всем привет. Помогите, пож, определить предикат len_NM (L,N,M), который проверяет содержит ли конкретный список из списков L не более N элементов с длинной, более М. Спасибо |