Всем привет. Возникла проблема по написанию проги..не могу реализовать список точнее сделать операцию REMOVESUBLIST – Удаление из списка всех подсписков.
помогите кто знает как это сделать вот выложил прогу может оттуда что можно сдуть(
Есть похожая программка которая удаляет из списка первого вхождения заданного элемента.
мдаа..никто не знает
Чуть что - сразу "никто не знает"... Компилятор Пролога - он же не у каждого под рукой, правда?
У меня, например, его нет. Но код могу попробовать набросать. Вот, тестируй:domains
spisok=integer*
predicates
del(spisok,spisok,spisok,spisok)
test(spisok,spisok,spisok)
do_it(spisok,spisok,spisok)
clauses
del([],_,_,[]):-!.
del([X|L1],L0,[X|L2],L):-test(L1,L2,L3),!,del(L3,L0,L0,L).
del([X1|L1],L0,L2,[X1|L]):-del(L1,L0,L2,L).
test(L,[],L):-!.
test([X|L1],[X|L2],L):-test(L1,L2,L).
do_it(L,L2,X):-del(L,L2,L2,X).
Вызывать так:
do_it([2,3,4,7,2,3,2,1,2,3,4],[2,3],X) - должно из списка, который в первом параметре, удалить все те подсписки, которые передаются вторым параметром...
Спасибо, Volvo! Вот только не понимаю как можно удалять подсписок у списка?
Добавлено через 8 мин.
Я думал что есть главный список и есть в нем голова и хвост, в качестве элемента так же могут быть подсписки.
Думал алгоритм решение данной задачи такой...делаем проверку на наличие подсписков если они есть то удлаяем их и получается у нас главный список пустой. Верно?
do_it([2,3,4,7,2,3,2,1,2,3,4],[2,3],X)---это считаеться целью?
млин...неужели ни кто не знает?((