【发布时间】:2018-03-19 01:45:55
【问题描述】:
所以我想创建一个简单的数字生成器,它生成一个介于 1 和 9 之间的数字,但它不允许成为提供的三个列表(数字列表)的一部分。一个例子:
findnumber(Number, [1,2,3], [3,4,5], [6,7,8]).
Number = 9.
或:
findnumber(Number, [1,2], [3,4], [5,6]).
Number = 7;
Number = 8;
Number = 9.
我会怎么做,我试过这个:
findnumber(Number, List1, List2, List3) :-
random_between(1, 9, Number),
not(member(Number, List1)),
not(member(Number, List2)),
not(member(Number, List3)).
我认为这会起作用,但显然不行,我认为这是因为 Number 是预先生成的,所以它无法真正找到先决条件。它只是检查它们是否不是成员,如果是,则谓词失败。
希望有人可以帮助我。 提前致谢。
【问题讨论】:
-
它对我来说很好用...你如何测试它??
-
当我运行它时,它失败了。但是当我输入这个时,我尝试了一些东西,现在它可以工作了,不知道我是否应该在这里给出答案。
标签: list random prolog numbers