Prolog将变量实例化为列表

时间:2014-05-22 19:08:24

标签: prolog

如果我有一个数据库,例如:

number(0).
number(1).
number(2).
number(3).
number(4).
number(5).
number(6).
number(7).
number(8).
number(9).

并希望编写谓词数字(L),将L实例化为数字列表。即。

numbers([A,B]).

应该将A和B实例化为10 * 10个不同的数字组合,我该怎么做呢。我想在数字(L)谓词中显示递归,而不是使用maplist。

非常感谢您的协助

1 个答案:

答案 0 :(得分:1)

首先,您不应将number/1用于您的目的,因为它是内置谓词的名称。将number重命名为num或其他名称。

产生一对数字的规则很简单:

numbers([A,B]) :- num(A), num(B).

是的,就是这样!

现在您可以打印所有这样的组合:

:- numbers([A,B]), write(A), write('-'), write(B), nl, fail.

Here is a demo on ideone.

相关问题