Форум программистов, компьютерный форум, киберфорум
Prolog
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 25.05.2010
Сообщений: 4

Удаление произвольного элемента из списка

01.06.2010, 08:17. Показов 2220. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Необходима программа, удаляющая произвольный элемент из списка.
Посоветовали вбить как
Prolog
1
2
3
del(_,[],[]):-!.
del(El,[El|T],T):-!.
del(El,[X|T],[X|T1]):-del(El,T,T1).
, но прога всё равно почему-то не работает, руки кривые..
Не подскажете, как в таком случае описать домены, предикаты и цель? Пожалуйста.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.06.2010, 08:17
Ответы с готовыми решениями:

Удаление элемента из списка
Нужно удалить из списка все элементы, которые равны первому элементу в списке. Программа выводит false delete_all(_,,). ...

Удаление элемента списка
В данной программе ввожу последовательность символов и нахожу слово максимальной длины. Подскажите пожалуста, как удалить этот элемент...

Удаление N-го элемента из списка
Здравствуйте, задача такая: Напишите предикат p(+N, +V, ?L) – истинный тогда и только тогда, когда список L получается после удаления...

6
 Аватар для Грымзик
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
01.06.2010, 14:35
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
domains
ilist=integer*
 
predicates
del(integer,ilist,ilist).
 
clauses
del(_,[],[]).
del(El,[El|T],T):-!.
del(El,[X|T],[X|T1]):-del(El,T,T1).
 
goal
del(3,[5,2,4,3,1,6,7],A).
В первом правиле отсечение не нужно, ведь если второй параметр пустой список,
то точно не будут выполнены ни второе ни третье правила.
1
0 / 0 / 0
Регистрация: 25.05.2010
Сообщений: 4
01.06.2010, 17:13  [ТС]
Спасибо большое!
0
Заблокирован
01.06.2010, 18:35
а вовтором правиле обязательно отсечение?
Prolog
1
2
3
4
delelem([],[],_).
    delelem([H|T],T,H).
    delelem([H|T],[H|TT],X):-
        delelem(T,TT,X).
вроде бы и так работает
0
 Аватар для Грымзик
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
01.06.2010, 18:40
Обязательно, ведь в случае если голова - искомый элемент, то ничто не мешает выполниться в этом случае и третьему правилу. У Вас наверно просто не ищутся автоматически все решения, воспользуйтесь тогда fail. Без отсечения выдается результат:
A=[5,2,4,1,6,7]
A=[5,2,4,3,1,6,7]
2 Solutions
1
Заблокирован
01.06.2010, 19:36
не понял куда fail засунуть
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
domains     
    element=integer
    list=element*
predicates
    output(list)   
    delelem(list,list,element)    /*удаление произваольного элемента спика*/
    start
clauses            
                      
    delelem([],[],_).
    delelem([H|T],T,H).
    delelem([H|T],[H|TT],X):-
        delelem(T,TT,X).
        
    output([]).
    output([H|T]):- 
        write(H),
        write(" "),
        output(T).  
 
    start:- 
        L=[3,1,2,3,4,5,3,6],    
        output(L),nl,
        delelem(L,L1,3),
        output(L1).
если голова искомый элемент то delelem([H|T],T,H). истинно и поиск закончен. Подскажите как найти все решения?
0
 Аватар для Грымзик
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
01.06.2010, 23:36
Если искать все возможные решения, то если голова - искомый элемент, может выполниться и третье правило
delelem([H|T],[H|TT],X), нигде нет никаких условий на H. Чтобы такого не было, надо ставить отсечение,
или писать проверку в третьем правиле, что H<>X.
Для того чтобы получить все решения, пишите output(L1),fail.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.06.2010, 23:36
Помогаю со студенческими работами здесь

Удаление указанного элемента из списка
удаление указанного элемента из списка delete_element_1(c, , ). delete_element_2(c, , ).

Удаление списка после элемента N
Здравствуйте. Помогите, пожалуйста решить задачу. Есть код: del(X, 0, X). del(,1,X). del(,N,Y) :- N &gt; 1,N1 is N - 1,...

Удаление элемента из списка строк
global database f(string,integer). global domains list=string* file = infile ; outfile predicates nondeterm...

Удаление каждого третьего элемента списка
Помогите пож-ста написать прогу удаляющая 3,6,9..и т.д. эл-ты списка))) Пож-стааааа)))0

Удаление элемента из списка на всех уровнях
Помогите решить задачу, сколько пытался - не могу удалить элементы дальше первого списка Напишите предикат p(+V, +X, -L) - истинный тогда...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru