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

Prolog, задача на списки

30.09.2014, 13:45. Показов 1263. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день,

Задача на списки:
нужно написать функцию cliq (G, L), где G имеет вид
g([person(A, [B, C, D, E]),
person(B,[D, F]),
person(C, [B]),
person(D, [A, E, F]),
и так далее]).
L - лист из разных A, B, C и т.п., нужно написать проверку на наличие в строке заданного значения остальных значений. Т.е. если в L вписаны A, B, C, то в листе относящемуся к person A должны быть B, и C, в листе относящемуся к B должны быть А и С значения (наличие других неважно). Значений может вводиться любое количество.

Буду очень благодарна если поможете, остановилась на
member(person(Head,FFriends), G),
не знаю как сделать рекурсивную проверку значений.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.09.2014, 13:45
Ответы с готовыми решениями:

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

turbo prolog. задача на списки
Здравствуйте. Задача звучит так: Есть 2 списка L1 и L2, и какое-то число X. Необходимо после каждого элемента списка L1, равному X, вывести...

Visual Prolog. Задача про списки
Имеется список. Нужно удалить только 5-ый элемент этого списка, остальные оставить без изменения!

8
 Аватар для arlat
798 / 601 / 158
Регистрация: 07.10.2013
Сообщений: 1,330
30.09.2014, 15:26
А обычным языком, как это задание звучит?

Добавлено через 34 минуты
Оригинал задания есть?
Текущая постановка выглядит, извините, как попытка запутать ситуацию в корне, чтобы потом можно было много и часто уточнять...
0
0 / 0 / 0
Регистрация: 30.09.2014
Сообщений: 5
30.09.2014, 16:13  [ТС]
Извините, хотелось как лучше
это часть задания, задание есть, на английском:

This graph can be represented with a Prolog term:

G0 = [person(susan, [reed, jen, andrzej, jessica]),
person(reed, [tony, jessica]),
person(jessica, [jen]),
person(tony, []),
person(ken, [andrzej]),
person(jen, [tony, susan, jessica]),
person(andrzej, [susan, ken])].

A clique is a duplicate-free list of at least two people who are all good friends. For example, Jessica Drew and Jen Walters form a clique in G0, as do Jen Walters and Susan Storm; but all three women do not form a clique, because Jessica Drew does not consider Susan Storm to be her friend.

Define a predicate clique(G, L) that is true whenever L is a clique in the friend graph G.

это оригинал части задания, первая часть (сделанная) выглядит так:

We say that X and Y are good friends if they are on each others’ friends lists. For example, in G0, Susan Storm and Jen Walters are good friends.

Define a predicate goodfriends(G, X, Y) that is true whenever X and Y are good friends in the graph G.

код для нее:
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
g([person(susan, [reed, jen, andrzej, jessica]),
     person(reed, [tony, jessica]),
     person(jessica, [jen]),
     person(tony, []),
     person(ken, [andrzej]),
     person(jen, [tony, susan, jessica]),
     person(andrzej, [susan, ken])]).
 
 
 
% to find the string or value on the list of strings or values.
 
member(R, [R|T]).  
member(R, [Z|T]) :- member(R,T).
 
% Z- need to be the string of G
%check(G, X, Y) :- member(Z, G), 
 
%find good friends
 
goodfriends(G, X, Y) :-
    member(person(X,XFriends), G),
    member(person(Y,YFriends), G),
    member(Y, XFriends), 
    member(X, YFriends).
0
 Аватар для arlat
798 / 601 / 158
Регистрация: 07.10.2013
Сообщений: 1,330
30.09.2014, 16:39
Ну, вот, нормальная задача, когда в оригинале.
Должны быть какие-то обязательные предикаты, типа member, или надо просто решить?
0
0 / 0 / 0
Регистрация: 30.09.2014
Сообщений: 5
30.09.2014, 20:45  [ТС]
просто решить (если очень интересно, там есть еще три пункта, могу скинуть )
0
 Аватар для arlat
798 / 601 / 158
Регистрация: 07.10.2013
Сообщений: 1,330
01.10.2014, 13:26
Ensall, да, интересная задача, эдакая прологовская вся
Вроде так
Кликните здесь для просмотра всего текста
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
clique(G, [X,Y|L]) :-
    member(person(X, XFriends), G),
    clique(XFriends, X, G, [], [Y|L]).
 
clique(XFriends, X, G, L0, L) :-
    allgoodfriends(XFriends, X, G, [Y|L1]),
    clique(L1, Y, G, [Y|L0], L).
clique([], _, _, L, L).
 
allgoodfriends([Y|Friends], X, G, [Y|R]) :-
    goodfriends(G, X, Y),
    allgoodfriends(Friends, X, G, R).
allgoodfriends([_|Friends], X, G, R) :-
    allgoodfriends(Friends, X, G, R).
allgoodfriends([], _, _, []).

Пишите всё задание как есть, все части.
0
0 / 0 / 0
Регистрация: 30.09.2014
Сообщений: 5
01.10.2014, 13:42  [ТС]
огромное спасибо
остальные задачи прикладываю ниже, но я на данный момент пробую их сделать самостоятельно (поэтому сразу и не кидала):

с) A FaceIn wannabe is a person X who (transitively) likes everyone else in the network. That is, there is a chain of friendship links from X to every other person in the graph. For example, Susan Storm is a wannabe in G0.

Define a predicate wannabe(G, X) that is true whenever X is a wannabe in G.

d) A FaceIn idol is a person X who is (transitively) liked by everyone else in the network. That is, there is a chain of friendship links from every other person in the graph to X. For example, Tony Stark is an idol in G0.

Define a predicate idol(G, X) that is true whenever X is an idol in G.

e) A path from X to Y is an alternating list [X1, A1, X2, A2, …, Xn] (n ≥ 1), where each Xi is a person, such that X1 = X, Xn = Y, and no person occurs more than once in the list; and where each Ai is either -> or <-, such that there is an arrow -> between Xi and Xi + 1 if Xi + 1 is on Xi’s friend list, and an arrow <- if Xi is on Xi + 1’s friend list. For example, [susan,->,reed,->,tony,<-,jen] is one of many paths from Susan Storm to Jen Walters in G0.

Define a predicate ispath(G, X, Y, P) that holds whenever P is a path from X to Y in G.
0
 Аватар для arlat
798 / 601 / 158
Регистрация: 07.10.2013
Сообщений: 1,330
01.10.2014, 14:21
Ensall, где Вы учитесь?
В кои то веки вижу на форуме нормальную задачу, - простые исходные данные, краткие и точные постановки поиска решений, примеры, развитие от простого к сложному... вот так, собственно, и нужно обучать Прологу
0
0 / 0 / 0
Регистрация: 30.09.2014
Сообщений: 5
01.10.2014, 15:16  [ТС]
Я учусь на магистра в Дании, Университет Копенгагена, мне очень стыдно что сама не могу написать эту программу, но проблема в том что пролог нам преподавали одну неделю, и эта же неделя идет на задание. К сожалению я медленно соображаю и просто не смогла самостоятельно выполнить его в такие сроки.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.10.2014, 15:16
Помогаю со студенческими работами здесь

Turbo prolog - задача на списки: определить, где живет Айрис и чем она занимается
Три дочери писательницы Дорис Кей - Джуди, Айрис и Линда тоже очень талантливы. Они приобрели известность в разных видах искусств - пении,...

Поездная бригада состоит из кондуктора, проводника, машиниста и помощника машиниста
Может у кого есть исходни на Prolog ЗЫ заранее спаисбо)

[Turbo Prolog] [Visual Prolog] Задача на рекурсию
Здравствуйте, помогите, пожалуйста, с такой задачей... Имеется горсть из N Монет C1,C2,....,Cn различного достоинства. Определить,...

Prolog: списки.
Ребят, помогите решить две задачки? 3.1. soedinit(SS, R): Список R получен из данного списка списков SS, соединив списки последнего...

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru