XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Общение> Трактир
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
GadenbIsh
Просто Гад
offline
Опыт: 70,930
Активность:
Задача на Пролог (prolog)
Задача: Пятеро школьников из пяти различных городов приехали в Смоленск для участия в олимпиаде по математике. "Откуда вы, ребята?" - спросили их. Вот что они ответили: Андреев: "Я приехал из Ярославля, а Григорьев живет в Гагарине". Борисов: "В Гагарине живет Васильев, я прибыл из Вязьмы". Васильев: "Из Ярославля приехал я, а Борисов - из Ельни". Григорьев: Я приехал из Гагарина, а Данилов из Ярцева". Данилов: "Да, я действительно из Ярцева, Андреев живет в Вязьме". В каждом из высказываний одно утверждение правильное, а другое ложное. Откуда приехал Данилов?
Цель: реализовать задачу на прологе (prolog)
Пролог конфликтует с моим мозгом, поэтому я не могу записать задачу на прологе, помогите!

Отредактировано ScorpioT1000, 18.03.2012 в 22:09.
Старый 22.04.2011, 18:55
GadenbIsh
Просто Гад
offline
Опыт: 70,930
Активность:
Решил!
школьник('Андреев').
школьник('Борисов').
школьник('Васильев').
школьник('Григорьев').
школьник('Данилов').

город('Ярославль').
город('Гагарино').
город('Вязьма').
город('Ельня').
город('Ярцево').

соответствие(Школьник,Город):- 
	школьник(Школьник),
	город(Город).

из_города(Школьник,Город):-
	соответствие('Андреев',X1), 
	соответствие('Борисов',X2),
	соответствие('Васильев',X3), 
	соответствие('Григорьев',X4),
	соответствие('Данилов',X5),
	((X1='Ярославль',X4\='Гагарино');(X1\='Ярославль',X4='Гагарино')),
	((X2='Вязьма',X3\='Гагарино');(X2\='Вязьма',X3='Гагарино')),
	((X3='Ярославль',X2\='Ельня');(X3\='Ярославль',X2='Ельня')),
	((X4='Гагарино',X5\='Ярцево');(X4\='Гагарино',X5='Ярцево')),
	((X5='Ярцево',X1\='Вязьма');(X5\='Ярцево',X1='Вязьма')),
	( 
		(X1=Город,Школьник='Андреев');
		(X2=Город,Школьник='Борисов');
		(X3=Город,Школьник='Васильев');
		(X4=Город,Школьник='Григорьев');
		(X5=Город,Школьник='Данилов')
	).
GadenbIsh добавил:
Результат работы:
[GadenbIsh@localhost prolog]$ ./lab02
GNU Prolog 1.3.1
By Daniel Diaz
Copyright (C) 1999-2009 Daniel Diaz
| ?- test(0).
1. из_города('Данилов', Город)
Город =  'Ярцево'
Старый 18.03.2012, 22:06
Hanabishi
COOL STATUS
offline
Опыт: отключен
Долго решал =\
Старый 18.03.2012, 22:19
GadenbIsh
Просто Гад
offline
Опыт: 70,930
Активность:
Пролог требует терпения.
Старый 18.03.2012, 22:21
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 23:31.