【发布时间】:2017-09-20 07:02:40
【问题描述】:
我编写了一个简单的程序来尝试使用满足特定约束的元素填充给定长度的列表。
例如,我想创建一个包含 0 到 9 之间的 4 个整数的列表,其中至少包含 3 和 4。我能想到几个(实际上是数千个)这样的列表:
[3,4,0,0]
[0,3,4,0]
[3,1,9,4]
etc...
但 SWI Prolog 只返回 false。我只是犯了某种逻辑错误,还是我使用 Prolog 错误?
我的代码:
is_single_digit_integer(N) :-
integer(N),
between(0, 9, N).
filled_list(Given, FillConstraint, OutLen, Out) :-
is_list(Out),
length(Out, OutLen),
length(Given, GivenLen),
between(0, OutLen, GivenLen),
maplist(FillConstraint, Out),
subset(Given, Out).
并运行我描述的示例:
?- filled_list([3,4], is_single_digit_integer, 4, X).
【问题讨论】:
标签: prolog