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

Логические задачи средствами Prolog-a

20.09.2012, 21:41. Показов 2894. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно, прошу реализацию этих логических задач в Прологе. Сама язык начала изучать буквально два дня назад и выполнить такое не могу, а сроки сдачи лабораторной поджимают. Заранее спасибо)

№1
Кликните здесь для просмотра всего текста
Разговорились как-то раз между собой шестеро пар-
ней: Андраш, Бела, Чаба, Дьердь, Элмер и Ференц. Из разговора выяснилось, что все шестеро спортсмены: двое — футболисты, двое занимаются прыжками в высо¬ту, один — пловец и один играет в водное поло. Занимаются они в трех спортивных клубах: двое в «Вашаш», двое в «Уйпешти Дожа» и двое в ФТЦ.
Кроме того, выяснилось следующее:
1)Бела раньше ходил на тренировки в бассейн один, а теперь к нему присоединился парень из ФТЦ;
2)члены клуба «Уйпешти Дожа» не играют в игры с мячом;
3)имя одного из спортсменов начинается с той же буквы, что и название вида спорта, которым он зани-мается. Поскольку «аллитерация» ему очень нравится, то он и спортивный клуб выбрал себе по тому же прин-ципу;
4)Чаба не умеет плавать;
5)члены клуба «Вашаш» занимаются двумя различ-ными «сухопутными» видами спорта;
6)Элмер когда-то выступал против команды, за ко-торую играл Ференц, но затем занялся другим видом спорта;
7)Андраш и Элмер одноклубники.
Определите, каким видом спорта занимается каж-дый из шестерых ребят и у кого имеются «собратья» по клубу или по виду спорта.

Ответ: Андраш - Футболист из Вашаша, Бела - пловец из Уйпешти Доджа, Чаба - легкоатлет из Уйпешти Доджа, Двердь - футболист из ФТЦ, Элмер - легкоатлет из Вашаша, Ференц - футболист из ФТЦ


№2
Кликните здесь для просмотра всего текста
Урок математики уже почти подошел к концу, когда учитель спросил:
—Ребята! Помнится, вы говорили мне, что очень любите логические заХачи. Верно?
— Да! — ответили разом все трое: Юлишка, Пишта и Карчи.
—В прошлом году мы уже решали такие задачи, а недавно нам на глаза попалась старая газета, в кото-рой была еще одна логическая задача.
С этими словами Пишта достал вырезку из газеты и начал читать:
1.— Встретились как-то раз в кооперативном доме отдыха пятеро пожилых крестьян и разговорились между собой. Фамилии у них были такие: Хайду, Яс, Кун, Палоч и Секель, а имена: Андраш, Ференц, Йожеф, Лайош и Шандор (имена крестьян не обязательно идут в том же порядке, что и фамилии)- В разговоре выяс-нилась любопытная подробность: оказалось, что родом крестьяне из Хайдушага, Ясшага, Куншага, Палочского района (Ноградского комитата ) и Секельфельда, при-чем ни один из крестьян, кроме дядюшки Фери, не ро-дился в той части Венгрии, название которой «звучит» в его фамилии. Лишь один из стариков живет и теперь в той же деревне, где когда-то родился.
Присоединимся к их веселой компании.
2.— Посмотрим, кто лучше разбирается в вине: хайдуцкие или палочские, — пошутил дядюшка Шандор, чокаясь с дядюшкой Секелем. (Выяснилось, что разбираются одинаково: оба с удовольствием пропустили по стаканчику вина.)
3.— Ты только послушай, что творится, — обратился дядюшка Лайош к своему соседу. — Каждый му-зыкант свою музыку хвалит.
Его мысль как бы продолжили слова песни:
...Что тебя милей на свете,
Хайду, край наш милый...
4.Две минуты- спустя дядюшка Палоч ткнул в бок дядюшку Яса:
—То один себя хвалил, а теперь двое!
И снова слова разудалой песни завершили мысль:
... Что мне Ясшаг, что мне Куншаг,
Сам себе я голова...
5.Затем заиграла музыка, и было слышно, как один из стариков сказал своему соседу, который был родом из Хайдушага:
—Если бы ты знал, какая вкусная у нас картошка! Объеденье! Для нас, коренных жителей Секельфельда, ничего нет вкуснее!
Тут Пишта замолчал и начал лихорадочно искать что-то в тексте. Не найдя того, что ему нужно, он нере-
вернул вырезку, посмотрел, что напечатано на обратной стороне. Все напрасно!
Тогда Пишта обратился -за помощью к учителю.
—Мне кажется, что я все-таки знаю, что было дальше. В конце задачи, наверное, спрашивалось, могут ли читатели назвать имя и фамилию каждого старика и указать, где он родился.
—Это и так ясно, — закричали его одноклассники. — Лучше ответь, были ли еще какие-нибудь условия.
Пишта смущенно замолчал.
—А ведь задачу можно решить и без дополнительных условий! Нужно лишь правильно истолковать то, что уже известно! — заметил учитель.
I.— Я думаю, — сказал Пишта, — что пели втроем дядюшка Палоч вместе с теми, кто родом из Ясшага и Хайдушага.
II.— А по-моему, все происходило не так, — возра-зила Юлишка. — Мне кажется, что уроженец Куншага, дядюшка Андраш и дядюшка йожи молчали.
III.— Я думаю, что вы оба ошибаетесь, — заметил Карчи.— Никто не пел, просто сначала заговорил тот из крестьян, кто родом из Секельфельда, а потом дя-дюшка Андраш.
—Нечего сказать, здорово же вы запутали конец задачи, — вмешался учитель. — Но поскольку мы так долго обсуждали ее, то я попрошу вас ответить на сле-дующий вопрос.
Если задача все же допускает решение, то чье толкование условий 3 и 4 лучше: Пишты, Юлишки или Карчи?

Ответ: Лайош Секель - из Хайдушага, Шандор Хайду - из Палочского, Ференц Яс - из Ясшага, Йожеф Кун - из Секельфельда, Андраш Палоч - из Куншага


№3
Кликните здесь для просмотра всего текста
В одном купе оказалось шесть попутчиков: Фельди, Хайду, Ковач, Шомодьи, Сабо и Ваш. Они разговорились о том, насколько «обманчивы» у некоторых из них фамилии
1.Профессия Фельди далека от сельского хозяйства, Ковач — не кузнец, Сабо — не портной, Ваш — не литейщик.
Столь же превратное представление фамилии дают и о месте, где человек родился (а в некоторых случаях — живет и поныне).
2.Фельди не живет в сельской местности, как, впро-чем, и все остальные пассажиры, кроме одного.
3.Хайду не живет в комитате Хайду, Шомодьи — в Шомоди, Ваш — в Ваше.
Однако среди профессий, которыми обладали пассажиры, нашлись и хлебороб, и кузнец, и литейщик. На¬шлись жители Хайду, Шомоди, Ваша. Нашелся среди пассажиров и сельский житель. Нашлись среди пассажи¬ров и земляки, живущие в одном комитате.
В ходе разговора выяснилось следующее.
4.Земледелец известен в Хайду скорее как шахматист.
5.Один из пассажиров по профессии учитель. Его фамилия звучит так же, как комитат, в котором родился портной.
6.Другой пассажир по профессии литейщик. Его фамилия звучит так же, как профессия пассажира по фамилии Сабо.
7.Деревня, в которой родился Сабо, расположена на территории комитата, название которого звучит так же, как фамилия земледельца.
8.Трое пассажиров — Ковач, Шомодьи и Фельди — могут побывать друг у друга в гостях, причем никому из них не придется для этого переправляться через Ду-най (разумеется, они избирают кратчайший маршрут).
9.Шомодьи родился в комитате, название которого совпадает с названием комитата, в котором в настоящее время живет учитель.
Весь дальнейший разговор пассажиров мы слышали краем уха и не можем сказать, кто из них сделал сле-дующие замечания.
10.— Я с юных лет изучал столярное дело и продолжаю совершенствоваться в нем и поныне.
11.— В Баранье в эту пору — самая жара.
12.— В Чонграде тоже достаточно тепло.
Попробуйте установить профессии всех шести пассажиров, а также где родился каждый из них.

Ответ:
Фельди —столяр — комитат Чонград,
Хайду — портной — комитат Шомодь,
Ковач — литейщик — комитат Хайду,
Шомодьи — учитель — комитат Хайду,
Сабо — кузнец — комитат Ваш,
Ваш — хлебороб — комитат Баранья.

0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.09.2012, 21:41
Ответы с готовыми решениями:

Visual Prolog 7.3 и логические задачи
Товарищи программисты, не могли бы Вы объяснить, как спрашивать пролог о результатах логической задачи именно в данной версии!Допустим я...

Разработка экспертных систем средствами Visual Prolog
Разработайте экспертную систему средствами языка Visual Prolog Консультация в отношении покупки принтера с учетом связанных с этим важных...

Логические задачи. Отец и 2 сына, поиск в ширину
Доброго времени суток. предыдущие задания типа написать простой предикат худо бедно осилил, а вот с задачей посложнее уже ни как. ...

2
 Аватар для Грымзик
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
21.09.2012, 20:44
Как-то слабо верится, что сразу три однотипные задачи требуют еще на первом месяце обучения.
Я без наработок не помогаю, и другие маловероятно помогут. Посмотрите аналогичные задачи на форуме, таких много. Если же самостоятельно хоть что-то написать совсем никак, и сроки так уж поджимают, то советую обратится во фриланс.
0
0 / 0 / 0
Регистрация: 10.09.2012
Сообщений: 31
05.10.2012, 00:19  [ТС]
В общем, не без книг и помощи, добилась вот такого результата ко второй задаче, однако какие бы условия не вставляла и как бы не подгоняла к ответу - пишет, что нет решений. Подскажете, в чем дело?

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
domains
all=all(string,string,string).
 
predicates
nondeterm surname(string)
nondeterm name(string)
nondeterm address(string)
 
 
nondeterm alldate(all,all,all,all,all)
 
 
nondeterm condition1(string,string,string)
nondeterm condition2(string,string,string)
nondeterm condition3(string,string,string)
nondeterm condition4(string,string,string)
nondeterm condition5(string,string,string)
 
nondeterm sravn(string,all)
nondeterm resh(string,string,string)
nondeterm eq(all,all)
nondeterm equal(string,string)
 
out(all)
 
goal
alldate(A1,A2,A3,A4,A5),
write("1 : ", A1), nl,
write("2 : ", A2), nl,
write("3 : ", A3), nl,
write("4 : ", A4), nl,
write("5 : ", A5), nl.
    
clauses
surname("Хайду").
surname("Яс").
surname("Кун").
surname("Палоч").
surname("Секель").
 
name("Андраш").
name("Ференц").
name("Йожер").
name("Лайош").
name("Шандор").
 
address("Хайдушаг").
address("Ясшаг").
address("Куншаг").
address("Палочский район").
address("Секельфельд").
 
equal(X,X).
sravn(N, all(N,S,T)):- resh(N,S,T).
eq(all(N1,S1,T1),all(N2,S2,T2)):- N1<>N2,S1<>S2,T1<>T2.
out(all(N, S, T)):-write("Имя: ", N),write("Фамилия: ", S),write("Город: ", T).
 
alldate(A1,A2,A3,A4,A5):-
sravn("Андраш", A1),
sravn("Ференц", A2),not(eq(A1,A2)),
sravn("Йожер", A3),not(eq(A1,A3)),not(eq(A2,A3)),
sravn("Лайош", A4),not(eq(A1,A4)),not(eq(A2,A4)),not(eq(A3,A4)),
sravn("Шандор", A5),not(eq(A1,A5)),not(eq(A2,A5)),not(eq(A3,A5)),not(eq(A4,A5)),
out(A1), nl, out(A2), nl, out(A3), nl, out(A4), nl, out(A5).
 
resh(N,S,T):- name(N),surname(S),address(T),
condition1(N,S,T),
condition2(N,S,T),
condition3(N,S,T),
condition4(N,S,T),
condition5(N,S,T).
 
condition1(_,S,T):- equal(S, "Яс"), equal(T, "Ясшаг").
        
condition2(N,_,T):- equal(N, "Шандор"), equal(T, "Палочский район"); equal(T, "Хайдушаг").
condition2(_,S,T):- equal(S, "Секель"), equal(T, "Палочский район"); equal(T, "Хайдушаг").
condition2(N,_,T):- equal(N, "Лайош"), equal(T, "Хайдушаг").
 
condition3(N,S,T):- equal(S, "Кун"), equal(T, "Секельфельд"), not(equal (N, "Андраш")).
 
condition4(_, S, T):- equal(S, "Хайду"), not(equal(T, "Куншаг")).
condition4(_,S,T):- equal(S, "Палоч"), equal(T, "Ясшаг"); equal(T, "Куншаг").
condition4(_,S,T):- equal(S, "Яс"), equal(T, "Куншаг"); equal(T, "Ясшаг").
 
condition5(_,S,T):- equal(S, "Хайду"), equal(T, "Секельфельд"); equal(T, "Ясшаг").
condition5(_,S,T):- equal(S, "Палоч"), equal(T, "Куншаг"); equal(T, "Ясшаг").
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.10.2012, 00:19
Помогаю со студенческими работами здесь

Prolog. Задачи на соответствие
Алиса в стране чудес. Загадка: Была украдена мука, ее нашли в домике, где жил Мартовский заяц, Болванщик и Соня. Мартовский заяц сказал:...

Prolog. Задачи на соответствие
Здравствуйте, кто-нибудь может помочь с задачей? Три школьника, Миша, Коля и Сергей, оставшиеся в классе на перемене были вызваны к...

SWI Prolog две задачи
1) Нужно определить предикат, который будет считывать с консоли строку текста до точки. Если не ошибаюсь, здесь требуется использовать...

Требуется реализация задачи на Prolog
. Определим операторы: :- op( 100, fy, ~). :- op( 110, xfy, &amp;). :- op( 120, xfy, v). Булева формула есть терм, определяемый...

Задачи на Strawberry Prolog на тему бинарных деревьев
Здраствуйте. Помогите пожалуйста решить задачи на Strawberry Prolog,в субботу сдавать,а я даже не знаю как их делать( исходного кода...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru