2013-05-14 3 views
1

Пролог твердит 'no' мне .... :(Пролог: правило, чтобы проверить пифагорейский триплет?

Я очень новичок в Prolog, у меня есть основной вопрос:

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

addup(X,Y,Z) :- X is Y+Z. /* this works*/ 
pythag(H,A,B) :- (H*H) is (A*A) + (B*B). /*this doesn't work*/ 

для тестирования, «addup» правило не появляется на работе .... Я считаю, что есть проблема с левая часть «ИС» в моей программе, так как г теста, кажется, указывают на это:

В интерактивном режиме смогу в том 2 является суммой 1 и 1, и он говорит, да:

| ?- 2 is 1+1. 

yes 

Но если я переключаю левую и правую стороны; он говорит:

| ?- 1+1 is 2. 

no 

Может ли кто-нибудь предоставить правильную версию правила pythag выше? Информация о версии следующим образом:

GNU Prolog 1.3.0 
By Daniel Diaz 
Copyright (C) 1999-2007 Daniel Diaz 
| ?- 

ответ

2

Мой пролог знание старый, но я считаю, что проблема заключается в том, что Пролог оценивает только правую сторону от is

Так попробуйте:

pythag(H,A,B) :- Z is H*H, Z is (A*A) + (B*B). 
+0

Компьютер говорит Да ! Благодаря ! [Https://www.youtube.com/watch?v=nm6bKkG_Mrc] – monojohnny

Смежные вопросы