prolog-Roman数字

时间:2012-11-07 12:41:14

标签: prolog roman-numerals

我正在尝试定义一个序言谓词数字(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)

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

您尚未加载该程序。请尝试listing查看此内容 - 否则请参阅my first reply