Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
15
Добавлен:
17.04.2015
Размер:
64.78 Кб
Скачать

Московский государственный университет леса Кафедра вычислительной техники

Лабораторная работа №1

по дисциплине "Интеллектуальные системы"

Выполнил:

студент группы ВТМ-11 Ларюшкин А.В.

Принял: Лапашина В.В.

Москва — 2012

Задание

Пользуясь методом «образовать и проверить», напишите на языке PROLOG программу для решения следующей головоломки:

Дима, Катя, Миша, Света и Юра проводили лето на даче вместе с родителями. Все дети разного возраста (4, 5, 6, 7 и 8 лет). У каждого из них своя любимая еда (бананы, мороженое, пиццa, спагетти, шоколад). И каждый чегонибудь боится (грозы, пауков, приведений, собак, темноты).

Нужно определить, сколько лет каждому из них, у кого какая любимая еда, и кто чего боится, если известно, что:

1.Девочки старше остальных, ни одна из них не боится темноты и обе не любят шоколад.

2.Света обожает пиццу и не страшится пауков.

3.Пятилетний ребенок больше всего боится привидений.

4.Шестилетний боится грозы и равнодушен к шоколаду и спагетти.

5.Самый младший ребенок любит есть бананы, а самый старший не боится собак.

6.Ни Дима (ему не пять лет), ни Миша не боятся ни темноты, ни пауков, и оба не любят бананы.

Текст программы для Turbo Prolog

domains

chname = string age = integer food = string fear = string

child = child(chname, age, food, fear) childlist = child*

predicates

 

puzzle

% головоломка

structure(childlist)

% структура

key(childlist)

% ключ

solution(childlist)

% решение

chname(child, chname)

% имя

age(child, age)

% возраст

food(child, food)

% любимая еда

fear(child, fear)

% боится

nofear(child, fear)

% не боится

older(child)

% старше

unlike(child, food)

% не любит

member(child, childlist)

% принадлежит списку

goal

 

puzzle.

 

clauses

 

 

% инициализация структуры:

structure ([

 

child("Misha",_,_,_), child("Dima",_,_,_), child("Sveta",_,_,_), child("Katya",_,_,_), child("Yura",_,_,_)

]).

puzzle:- structure(Struct), key(Struct), solution(Struct).

key(Children):-

% объявление лакомств:

member(child(_,_,"Chocolate",_),Children), member(child(_,_,"Pizza",_),Children), member(child(_,_,"Spagetty",_),Children), member(child(_,_,"Banan",_),Children), member(child(_,_,"Icecream",_),Children),

% объявление страхов:

member(child(_,_,_,"Darkness"),Children), member(child(_,_,_,"Spiders"),Children), member(child(_,_,_,"Ghosts"),Children), member(child(_,_,_,"Storm"),Children), member(child(_,_,_,"Dogs"),Children),

% ключ 1:

%девочки старше остальных, ни одна из них не боится темноты и обе не

%любят шоколад

member(Ch1,Children),

member(Ch2,Children),

older(Ch1),

chname(Ch1,"Katya"),

older(Ch2),

chname(Ch2,"Sveta"),

not(fear(Ch1,"Darkness")),

not(fear(Ch2,"Darkness")),

not(food(Ch1,"Chocolate")),

not(food(Ch2,"Chocolate")),

% ключ 2:

% Света обожает пиццу и не страшится пауков

member(Ch3,Children),

food(Ch3,"Pizza"),

chname(Ch3,"Sveta"),

not(fear(Ch3,"Spiders")),

% ключ 3:

%пятилетний ребенок больше всего боится привидений member(Ch4,Children),

fear(Ch4,"Ghosts"),

age(Ch4,5),

%ключ 4:

%шестилетний боится грозы и равнодушен к шоколаду и спагетти member(Ch5,Children),

fear(Ch5,"Storm"),

age(Ch5,6),

not(food(Ch5,"Chocolate")),

not(food(Ch5,"Spagetty")),

%ключ 5:

%самый младший ребенок любит есть бананы, а самый старший не боится

%собак

member(Ch6,Children),

member(Ch7,Children),

age(Ch6,4),

food(Ch6,"Banan"),

age(Ch7,8),

not(fear(Ch7,"Dogs")),

% ключ 6:

%ни Дима (ему не пять лет), ни Миша не боятся ни темноты, ни пауков, и

%оба не любят бананы

member(Ch8,Children),

member(Ch9,Children),

chname(Ch8,"Dima"),

chname(Ch9,"Misha"),

not(age(Ch8,5)),

not(fear(Ch8,"Darkness")),

not(fear(Ch9,"Darkness")),

not(fear(Ch8,"Spiders")),

not(fear(Ch9,"Spiders")),

not(food(Ch8,"Banan")),

not(food(Ch9,"Banan")).

% вывод результата (структуры):

solution(Children):- write(Children).

chname(child(A,_,_,_),A). age(child(_,B,_,_),B). food(child(_,_,C,_),C).

unlike(child(_,_,C,_),C):- not(food(child(_,_,C,_), C)). fear(child(_,_,_,D),D).

nofear(child(_,_,_,D),D):- not(fear(child(_,_,_,D), D)). older(child(_,B,_,_)):- B=7; B=8.

member(X, [X|_]).

member(X, [_|Y]):- member(X, Y).

Результат

Имя

Возраст

Любимая еда

Боится

Миша

5

шоколад

приведений

Дима

6

мороженое

грозы

 

 

 

 

Света

7

пицца

собак

Катя

8

спагетти

пауков

 

 

 

 

Юра

4

бананы

темноты

Соседние файлы в папке Головоломка №14
  • #
    17.04.201564.78 Кб15p14.pdf
  • #
    17.04.20152.66 Кб6p14.pro