Лабораторный практикум пролог. Методические рекомендации по дисциплине Анализ данных
Скачать 311.21 Kb.
|
Решение PREDICATES имя(string) туфли(string) платье(string) соот (string,string,string) решение (string,string,string,string,string,string, string,string,string) CLAUSES имя(наташа). имя(валя). имя(аня). туфли(белый). туфли(синий). туфли(зеленый). платье(белый). платье(синий). платье(зеленый). °% X- имя, Y - цвет туфель, Z - цвет платья соот(Х,У^): -имя(Х),туфли(У),платье^), Х=наташа,У=зеленый,У<^. соот(Х,У^): -имя(Х),туфли(У),платье^), X=валя,not(Y=белый), not(Z=белый), Y<>Z. соот (X,Y,Z):-имя(X),туфли(Y),платье(Z),X=аня,Y=Z. решение(Х1,У1^1,Х2,У2^2,Х3,У3^3):- Х1=наташа,соот(X1,Y1,Z1), Х2=валя, соот(Х2,У2^2), Х3=аня, соот(Х3,У3^3), Y1<>Y2, Y2<>Y3, Y1<>Y3, Z1<>Z2, Z2<>Z3, Z1<>Z3. GOAL решение(Х1,У1^1,Х2,У2^2,Х3,У3^3),
Результат выполнения программы
Пример 3 Витя, Юра и Миша сидели на скамейке. В каком порядке они сидели, если известно, что Миша сидел слева от Юры, а Витя слева от Миши. Решение PREDICATES слева(string,string) ряд(string,string,string) CLAUSES /* Миша сидел слева от Юры */ слева(миша, юра). /* Витя сидел слева от Миши */ слева(витя, миша). /* Объекты X, Y и Z образуют ряд, если Х слева от Y и Y слева от Z */ ряд(Х, Y, Z):- слева(ХД), слева(У, Z). GOAL ряд^, Y, Z), write(X,"-",Y,"-",Z),nl. Результат выполнения программы витя-миша-юра Пример 4 Известно, что тополь выше березы, которая выше липы. Клен ниже липы, а сосна выше тополя и ниже ели. Определить самое высокое и самое низкое дерево. Решение DOMAINS name=string PREDICATES выше(name,name) ряд(name,name,name,name,name,name) CLAUSES выше(тополь,береза). выше(липа,клен). выше(ель,сосна). выше(береза,липа). выше(сосна,тополь). ряд(Х1,Х2,Х3,Х4,Х5,Х6):-выше(Х1,Х2),выше(Х2,Х3), выше(Х3,Х4),выше(Х4,Х5), выше(Х5,Х6). GOAL ряд(X,_,_,_,_,Y),write("Самое высокое - ",X),nl, write("Самое низкое - ",Y),nl. Результат выполнения программы Самое высокое - ель Самое низкое - клен ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ Трое ребят вышли гулять с собакой, кошкой и хомячком. Известно, что Петя не любит кошек и живет в одном подъезде с хозяйкой хомячка. Лена дружит с Таней, гуляющей с кошкой. Определить, с каким животным гулял каждый из детей. Беседуют трое друзей: Белокуров, Рыжов и Чернов. Брюнет сказал Белокурову: «Любопытно, что один из нас блондин, другой - брюнет, а третий - рыжий, но ни у кого цвет волос не соответствует фамилии». Какой цвет волос у каждого из друзей? Витя, Юра, Миша и Дима сидели на скамейке. В каком порядке они сидели, если известно, что Юра сидел справа от Димы, Миша справа от Вити, а Витя справа от Юры. Известно, что Волга длиннее Амударьи, а Днепр короче Амударьи. Лена длиннее Волги. Определить вторую по протяженности реку. 1.4 Арифметические вычисления и рекурсия в ПРОЛОГе Краткие теоретические сведения Хотя Пролог не предназначен для решения вычислительных задач, его возможности вычислений аналогичны соответствующим возможностям таких языков программирования как Basic, C, Pascal. В языке Пролог имеется ряд встроенных функций для вычисления арифметических выражений, некоторые из которых перечислены в таблице 1. Таблица 1. Математические операции и функции в Прологе
|