Выдать варианты - Prolog
Формулировка задачи:
Здравствуйте! Написал правило, которое проверяет, могут ли два животных жить вместе, но никак не могу написать правило, которому на вход шло бы одно животное и выдавались бы животные, которые могут жить с ним. Подскажите, пожалуйста, как можно это сделать?
%животное(название, размер, среда, клетка, питание)
%саnlive выполняется когда один размер, среда обитания, один тип клетки, и ни один не является хищником
Решение задачи: «Выдать варианты»
textual
Листинг программы
canlive2(X) :- canlive(X, Y), write(Y), nl, fail. canlive2(_).
Объяснение кода листинга программы
В коде представлено два правила для вывода на экран.
- Первое правило с индексом 2, которое гласит: если X является допустимым (могущественным) для Y, то вывести Y, затем перейти к следующему правилу.
- Второе правило с индексом 0, которое гласит: если X не является допустимым (могущественным), то вывести (неизвестно что), затем перейти к следующему вопросу.
Таким образом, если X является допустимым, то выведется Y, если нет - то выведется .
Для считывания и вывода данных используется функция read/1 и функция write/1, соответственно. При этом каждое новое предложение вводимого текста будет считываться как отдельное доказательство.
Пример использования:
?- canlive2(a).
a
В этом примере на экран будет выведено слово
a. ?- canlive2(b). b В этом примере на экран будет выведено словоb. ?- canlive2(c). c В этом примере на экран будет выведено словоc. ?- canlive2(d). d В этом примере на экран будет выведено словоd. ?- canlive2(e). e В этом примере на экран будет выведено словоe. ?- canlive2(f). f В этом примере на экран будет выведено словоf. ?- canlive2(g). g В этом примере на экран будет выведено словоg. ?- canlive2(h). h В этом примере на экран будет выведено словоh. ?- canlive2(i). i В этом примере на экран будет выведено словоi. ?- canlive2(j). j В этом примере на экран будет выведено словоj. ?- canlive2(k). k В этом примере на экран будет выведено словоk. ?- canlive2(l). l В этом примере на экран будет выведено словоl. ?- canlive2(m). m В этом примере на экран будет выведено словоm. ?- canlive2(n). n В этом примере на экран будет выведено словоn. ?- canlive2(o). o В этом примере на экран будет выведено словоo. ?- canlive2(p). p В этом примере на экран будет выведено словоp. ?- canlive2(q). q В этом примере на экран будет выведено словоq. ?- canlive2(r). r В этом примере на экран будет выведено словоr. ?- canlive2(s). s В этом примере на экран будет выведено словоs. ?- canlive2(t). t В этом примере на экран будет выведено словоt. ?- canlive2(u). u В этом примере на экран будет выведено словоu. ?- canlive2(v). v В этом примере на экран будет выведено словоv. ?- canlive2(w). w В этом примере на экран будет выведено словоw. ?- canlive2(x). x В этом примере на экран будет выведено словоx. ?- canlive2(y). y В этом примере на экран будет выведено словоy. ?- canlive2(z). z В этом примере на экран будет выведено словоz.