- Философия, эзотерика:
- Религии:
- Познавательное
(обо всём)
Программа производит подбор стран, которые не имеют общих границ.
domains country = symbol predicates euro_pair(country,country) /* пары стран */ border(country,country) /* пара стран с общей границей */ find_non_border_pair /* пара стран без общей границы */ clauses /* факты - пары для четырёх стран */ euro_pair("France","Germany"). euro_pair("France","Spain"). euro_pair("France","Italy"). euro_pair("Germany","Spain"). euro_pair("Germany","Italy"). euro_pair("Spain","Italy"). /* пары стран с общей границы */ border("France","Germany"). border("France","Spain"). border("France","Italy"). /* правило - пара стран не имеет общей границы, если существует вообще такая пара и этой пары не в списке пар с общей границей */ find_non_border_pair :- euro_pair(X,Y), not(border(X,Y)), write("No border ",X," with ",Y),nl. goal find_non_border_pair.
Результат:
No border Germany with Spain
No border Germany with Italy
No border Spain with Italy
Отрицание можно использовать для определения того, являются ли соседями две выбранные страны. Предположим, вы хотите знать, граничат ли между собой Германия и Испания. Запрос формулируется так:
find_non_border_pair :- euro_pair("Germany","Spain"), not (border("Germany", "Spain")), write("Germany and Spain without common border."),nl.
Ответом на запрос явится True, так как согласно имеющимся в базе данных фактам, эти страны общей границы не имеют.
Рассмотрим теперь другой запрос:
not (border(«France», «Italy»)).
Ответом на него будет False, так как Франция и Италия соседи.
!!Рекомендуем: Семейная Энциклопедия Здоровья ⇒ Что должен знать современный человек? ⇒ Самоанализ. Работа над собой ⇒ Оглавление ⇒ Главная сайта
Обсуждение