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

eml / matrix

.pl
Скачиваний:
5
Добавлен:
21.03.2016
Размер:
2.19 Кб
Скачать
%Вопросы для пользователя
quest(1,'Что делал весь семестр? Сдавал лабы - 1, Сдавал ОКР - 2, Учил теорию - 3, Тащил все задания - 4').
quest(2,'Что делал весь семестр? Лайкал фотки преподавателя - 1, Хулиганил на парах - 2, Преподаватель не работал - 3, Не ходил на пары-').

%матрица ответов
%1 строка матрицы
answer(1,['Получил допуск к экзамену','Возможно завалят на экзамене','Завалите практику','Не получите допуск']).
%2 строка матрицы
answer(2,['Накормите пользователя','Ну и пусть не работают','Пользуйтесь мышью']).
%3 строка матрицы
answer(3,['Жизнь - тлен','Жизнь - боль','Коты спасут мир']).

% нам понадобится функция, которая по списку и номеру его элемента
% возвратит сам этот элемент
% find(L,N,E,CN) -
% L - список,
% N - номер элемента, который надо найти
% E - сам элемент, который должен вернуться
% CN - начальная позиция и, по совместительству, текущий индекс
% 1 случай - если текущий индекс стал больше, чем номер искомого
% элемента - завершить работу функции
find(_,N,E,CN):- CN>N,E = 'not found',!.
% 2 случай - если текущий индекс равен номеру искомого элемента - то
% вывести голову полученного списка
find(L,N,E,CN):- L = [H|_], CN = N, E = H,!.
% 3 случай - Если текущий индекс меньше номера искомого элемента, то
% увеличить текущий индекс на единицу и искать дальше
find(L,N,E,CN):- L = [_|T], CN < N, CN2 is CN+1,find(T,N,E,CN2),!.
% 4 случай - если номер искомого элемента больше длины списка - то
% ошибка, завершить работу функции

find(L,N,E,_):- length(L,SL), N > SL, E = 'not found',!.

%Правило, запускающее вопросы
% Первое - обратиться к фактам quest и вывысти текст вопросов
% Второе - получить от пользователя цифровые ответы
% Третье - обратиться к ответу, соответствующему номеру строки (его мы
% получили из второго вопроса) и получить из answer список с ответами
% Четвёртое - теперь, когда у нас есть список, необходимо найти X1-ый
% элемент, сделаем это можно с помощью функции поиска элемента списка -
% find(L,N,E,1)
% Пятое - вывести текст решения - E

play:- quest(1,Text1),write(Text1),nl,
read(X1),nl,
quest(2,Text2),write(Text2),nl,read(X2),
answer(X2,L),
find(L,X1,E,1),
write(E).
Соседние файлы в папке eml