Выбор решения - Prolog
Формулировка задачи:
Уважаемые!
Решаю в Visual Prolog 5.2 следующую задачу(сразу оговорюсь- без использования списков-их не проходили еще со студентами):
На улице, встав в кружок, беседует четыре девочки: Аня, Валя, Надя, Галя. Девочка в зеленом платье – не Аня и не Валя - стоит между девочкой в голубом платье и Галей. Девочка в белом платье стоит между девочкой в розовом платье и Валей. Какого цвета платье у каждой из девочек?
Вот мой код:
Выдаются 2 решения.Недочет понятен:не отражено,что девочка в белом стоит между девочкой в розовом и Валей.Не подскажете,как это сделать?
Решение задачи: «Выбор решения»
textual
Листинг программы
girl('anya'). girl('valya'). girl('nadya'). girl('galya'). color('green'). color('blue'). color('white'). color('pink'). otnosh(X,Y):- girl(X),color(Y). whois(X,Y,Z,W,X1,Y1,Z1,W1):- girl(X),girl(Y),girl(Z),girl(W), color(X1),color(Y1),color(Z1),color(W1), X\=Y,X\=Z, X\=W, Y\=Z, Y\=W, Z\=W, X1\=Y1,X1\=Z1, X1\=W1, Y1\=Z1, Y1\=W1, Z1\=W1, otnosh(X,X1),otnosh(Y,Y1),otnosh(Z,Z1),otnosh(W,W1), X1\='green', Y1\='green', Y1\='white', Y1\='pink', W1\='white', W1\='pink', W1\='blue'. start:- whois(X,Y,Z,W,X1,Y1,Z1,W1), write(X),write(' - '),writeln(X1), write(Y),write(' - '),writeln(Y1), write(Z),write(' - '),writeln(Z1), write(W),write(' - '),write(W1).
Объяснение кода листинга программы
- Создаются четыре переменные типа girl для представления имен девочек: anya, valya, nadya, galya.
- Создаются четыре переменные типа color для представления цветов: green, blue, white, pink.
- Создается функция otnosh, которая требует, чтобы две переменные типа girl были равны друг другу, а две переменные типа color были равны друг другу.
- Создается функция whois, которая требует, чтобы четыре переменные типа girl и четыре переменные типа color были равны друг другу, а восемь различных пар девушек и цветов были представлены.
- Функция start запускается для представления информации, введенной пользователем.
- В функции start вызывается функция whois для проверки введенных пользователем данных.
- В функции start выводятся значения переменных X, Y, Z и W, а также соответствующих им переменных X1, Y1, Z1 и W1.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д