【发布时间】:2014-12-20 17:20:08
【问题描述】:
我目前正试图在 Prolog 中解决一个简单的“乘 peano 整数”问题。
基本规则
- peano 整数定义如下:0 -> 0; 1 -> s(0); 2 -> s(s(0)) s(s(s(0) -> 3 等等。
- 关系定义如下:multiply(N1,N2,R)
- 在哪里
- N1 是第一个 peano 整数(即类似 s(s(0)))
- N2 是第二个 peano 整数(例如 s(s(0)))
- R 是生成的新 peano 整数(如 s(s(s(s(0)))))
- 在哪里
我知道 Prolog 默认提供基本算术逻辑,但我正在尝试使用 peano 整数实现基本算术逻辑。
由于乘法基本上是重复加法,我认为它可能看起来像这样:
Prolog 尝试
%Addition
% Adds two peano integers 3+2: add(s(s(s(0))),s(s(0)),X). --> X = s(s(s(s(s(0)))))
add(X,0,X).
add(X,s(Y),s(Z)) :- add(X,Y,Z).
%Loop
%Loop by N
loop(0).
loop(N) :- N>0, NewN is N-1, loop(NewN).
问题是我不知道如何让 prolog 根据系数运行循环 N 次,添加 peano 整数并建立正确的结果。我相信这很容易实现,并且生成的代码可能不会超过几行代码。几个小时以来,我一直在努力实现这一目标,这让我很生气。
非常感谢您的帮助,并且...圣诞快乐!
迈克
【问题讨论】:
-
也祝你圣诞快乐,欢迎来到 Stack Overflow!
-
@MikeFloyd:您可以在该链接下找到您需要的所有答案!
-
@false:谢谢,我一定会检查的!
标签: prolog multiplication successor-arithmetics