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

Prolog: списки.

18.11.2010, 23:07. Показов 10410. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят, помогите решить две задачки?

3.1. soedinit(SS, R):
Список R получен из данного списка списков SS, соединив списки последнего в один список.
Пример. goal: soedinit([[a,b],[c],[d,e,f]],R).
R = [a,b,c,d,e,f].


4.7 zamena(A, K, R):
Дан список A. Данный список K указывает замену и состоит из элементов вида
K(ЗаменяемыйСимвол, ЗамененныйСимвол).
R - результат, полученный применив к списку A замену K.
Пример. goal: zamena ([a,c,b], [k(a,x), k(b,y)],R).
R= [x,c,y].
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.11.2010, 23:07
Ответы с готовыми решениями:

Prolog, списки
Здравствуйте, помогите, пожалуйста. Нужно вывести списки полных и неполных семей, а также их количество. То есть количество полных и...

SWI-Prolog Списки
Удаление элемента из списка с указанным значением. Спасибо :)

SWI Prolog Списки
В SWI Prolog надо удалить 3 первых и последних элемента, обязательно через рекурсию. Есть проги, которые удаляют первые 3 и последние 3,...

11
Заблокирован
19.11.2010, 07:21
Цитата Сообщение от bobeek Посмотреть сообщение
помогите решить две задачки?
укажите какой пролог.
по определению, помощь это содействие, следовательно, чтобы мы могли вам помочь, вам нужно самостоятельно произвести какое-то действие в нужном направлении.
вам быстрее помогут если вопросы будут более конкретные.
2
130 / 117 / 30
Регистрация: 14.11.2010
Сообщений: 707
19.11.2010, 12:21
вот пример соединения двух списков:

1. отделяется голова от первого списка - [1, 2] -> [1 | [2]] (голова - 1, хвост - [2])
2. продолжается выполнение отделение головы, только теперь от полученного хвоста - [ 2] -> [2 | [ ]] (голова - 2, хвост - [ ])
3. когда первый список разобран до пустого, можно приступить к его объединению со вторым, непустым списком, объединяются пустой хвост [ ] и непустой второй список [3, 4] - получается тоже непустой список - [3, 4], теперь можно приступать к формированию объединенного списка, так как основа для списка-результата заложена, это его будущий хвост - [3, 4]
4. к хвосту списка-результата [3, 4] добавляется последняя отделенная от первого списка голова 2, что дает следующий список - [2, 3, 4]
5. все, что осталось сделать, это добавить к списку [2, 3, 4], который получился на предыдущем шаге, голову 1, которая была отделена самой первой и получается объединенный список [1, 2, 3, 4]


Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
DOMAINS
intlist=integer*
 
PREDICATES
append (intlist, intlist)
 
CLAUSES
%объединение пустого и непустого списков
append ([ ], List, List):- !.
%объединение двух непустых списков
append ([H | T], List, [H | App_T]):- append (T, List, App_T).
 
GOAL
append ([1, 2], [3, 4], App_List), write("App_List=", App_List).
1
1 / 1 / 0
Регистрация: 20.08.2010
Сообщений: 20
28.11.2010, 21:06  [ТС]
Программу с заменой написал, если кому надо, выложу.

Осталось первую, где соединить список списков и сохранить в R. Никак не могу ее написать..Препод говорит с рекурсией пишется за 5мин.
Вот на чем я застрял:
Prolog
1
2
3
4
soedinit2([], []).
soedinit2([P|TAIL],S,[P|TAIL]) :- soedinit2(TAIL,S,REZ). //это всем известный алгоритм соединяет два списка в один
 
soed([H|Tail], R) :- soedinit2(H, R, R1), soed(Tail, R1). //тут я пытаюсь отделять голову(списк) и соединять с результатом
Вроде логично, но почему-то не выходит, ответ при запросе например
?- soed([[a,b],[c,d],[e,f],[t,o]], R).
false.

выдает фолс(( вместо [a,b,c,d,e,f,t,o]

Ах да, написать надо на SWI prolog(хотя значения это особо не имеет)
0
 Аватар для Грымзик
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
28.11.2010, 21:46
Ну вообще-то диалект большое значение имеет. А то некоторые не укажут, а потом просят переписать на другой диалект.
Prolog
1
2
3
4
soedinit2([], []).
soedinit2([P|TAIL],S,[P|REZ]) :- soedinit2(TAIL,S,REZ). 
 
soed([H|Tail], R) :- soed(Tail, R1),soedinit2(H, R1, R) .
1
1 / 1 / 0
Регистрация: 20.08.2010
Сообщений: 20
28.11.2010, 22:49  [ТС]
Цитата Сообщение от Грымзик Посмотреть сообщение
Ну вообще-то диалект большое значение имеет. А то некоторые не укажут, а потом просят переписать на другой диалект.
Prolog
1
2
3
4
soedinit2([], []).
soedinit2([P|TAIL],S,[P|REZ]) :- soedinit2(TAIL,S,REZ). 
 
soed([H|Tail], R) :- soed(Tail, R1),soedinit2(H, R1, R) .
ХМ..у вас вроде все правильно, но все равно, пишет фолс как и в первом случае. Наверное что-то не так с R1
0
 Аватар для Грымзик
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
28.11.2010, 22:53
А, ну конечно, надо soedinit2([], S,S).
1
1 / 1 / 0
Регистрация: 20.08.2010
Сообщений: 20
28.11.2010, 23:50  [ТС]
Цитата Сообщение от Грымзик Посмотреть сообщение
А, ну конечно, надо soedinit2([], S,S).
Так вообще некомпилит даже(( Singleton variables(H, R).
0
 Аватар для Грымзик
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
28.11.2010, 23:56
Этой ошибки точно не должно быть, что-то напутали. Но и я что-то не то пишу
Prolog
1
2
3
4
5
soedinit2([],S,S).
soedinit2([P|TAIL],S,[P|REZ]) :- soedinit2(TAIL,S,REZ).
 
soed([],[]).
soed([H|Tail], R) :- soed(Tail, R1),soedinit2(H, R1, R) .
1
1 / 1 / 0
Регистрация: 20.08.2010
Сообщений: 20
28.11.2010, 23:58  [ТС]
Цитата Сообщение от Грымзик Посмотреть сообщение
Этой ошибки точно не должно быть, что-то напутали. Но и я что-то не то пишу
Prolog
1
2
3
4
5
soedinit2([],S,S).
soedinit2([P|TAIL],S,[P|REZ]) :- soedinit2(TAIL,S,REZ).
 
soed([],[]).
soed([H|Tail], R) :- soed(Tail, R1),soedinit2(H, R1, R) .
ГРОМАДНОЕ вам спасибо!!! Теперь все работает, тему можно закрыть.
1
Svetlana Guseva
15.11.2013, 20:47
Здравствуйте! Помогите,пожалуйста,решить две задачи в Прологе strawberry, ничего в этом не понимаю..
1)Включить элемент в список с сохранением упорядоченности исходного.
2)Сформировать список из заданного,изменив порядок элементов на обратный.
 Аватар для Грымзик
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
16.11.2013, 16:26
Svetlana Guseva, обе задачи 100500 раз встречались на форуме. Хотя бы тут посмотрели Решенные задачи про списки, строки, файлы, БД
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.11.2013, 16:26
Помогаю со студенческими работами здесь

Порядковые списки в Prolog
Здравствуйте! Не могли бы помочь с реализацией стандартных предикатов порядкового списка (список типа ). При реализации append нужно...

Turbo Prolog 2.0 Списки
Сформулировать список L1 из элементов: произведение всех n элементов L,произведение первых n-1 элементов L и т.д.

Prolog, задача на списки
Добрый день, Задача на списки: нужно написать функцию cliq (G, L), где G имеет вид g(), person(B,), person(C, ), ...

Списки, Visual Prolog
добрый вечер! помогите пожалуйста выполнить вот какое задание: Дано название групп, солист, альбом, и стиль. -Сформировать первый...

Strawberry prolog списки
найти N-ый элемент списка. подскажите пожалуйста, сделала вот так: appened(,1,H). appened(,N,):- N > 1, Nn is N -...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru