вычислить в прологе - PullRequest
       5

вычислить в прологе

4 голосов
/ 25 ноября 2010

Я знаю, что в прологе, который мы просим, ​​это правда или ложь, можем ли мы вычислить, например, среднее значение и как выглядит предикат?

Ответы [ 2 ]

4 голосов
/ 25 ноября 2010

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

average(List, Result) :- length(List, Len), sum(List, Sum), Result is Sum / Len.

sum([], 0).
sum([H|T], Sum) :- sum(T, Temp), Sum is Temp + H.

Тогда вы получите:

?- average([1, 2, 3], X).
X = 2.
3 голосов
/ 25 ноября 2010

Пролог не спрашивает, верно ли что-то из ложного.Это распространенное заблуждение.Пролог пытается объединить цели запроса с предикатами программы.Если это успешно, он возвращает присваивание переменным, появляющимся в запросе.Если это не удается - что не должно быть распространенным случаем - возвращает «ложь».

Что касается средних, см. Ответ 3electrologos.

...