1

我正在尝试定义一个序言谓词数字(X,Y),如果 X 是十进制数 Y 的罗马数字,则它是正确的。

numerals(X,Y) :- X is ('M'), Y>=1000.
numerals(X,Y) :- X is  ('CM'), Y>=900.
numerals(X,Y) :- X is  ('D'), Y>=500.
numerals(X,Y) :- X is  ('CD'), Y>=400.
numerals(X,Y) :- X is  ('C'), Y>=100.
.
.
.
.

当我运行我的代码时,我得到一个错误:

?-numerals(M,1001).
ERROR: toplevel: Undefined procedure: numerals/2 (DWIM could not correct goal)
4

2 回答 2

1

您还没有加载程序。试着listing看看这个 - 否则请参考我的第一个回复

于 2012-11-07T12:47:13.460 回答
1

Prolog是基于生成然后测试的。两部分之间的顺序很重要。你想测试什么,你想生成什么?

此外,您确定要使用“is”。这是用于算术运算的。

最后,您真的打算编写没有相互依赖关系的规则吗?使用递归算法可能是个好主意……或者您必须为任何可能的数字编写规则。

于 2012-11-07T12:49:25.370 回答