2013-05-14 56 views
1

序言口口声声说'no'我.... :(prolog:检查pythagorean三联体的规则?

新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”规则确实出现了工作.... 我相信这是一个问题与在我的程序中'IS'的左侧,如下所示G试验似乎表明这一点:

在交互模式下,我可以为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

我的序言知识是旧的,但我相信这个问题是Prolog的唯一评价的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 2013-05-14 16:12:39