1

我需要在 prolog 中生成一个布尔值列表。

?- gener_booleans(Xs,3).
Xs = [true, true, true] ;
Xs = [true, true, false] ;
...
Xs = [false, false, false] ;

这是另一个解决方案的链接,但我不知道如何将其应用于布尔值。 获取序言中的所有列表集 有人可以帮忙吗?PS列表的数量是2 ^ N。谢谢!

4

2 回答 2

3

如果您的 Prolog 有maplist谓词(如 SWI 和 YAP):

booleans(Xs, N) :-
    length(Xs, N),
    maplist(boolean, Xs).
boolean(true).
boolean(false).

(我重命名了谓词booleans,因为它也可以检查布尔值;在 Prolog 中编程时更喜欢声明性名称。)

于 2012-04-29T16:07:00.467 回答
1
gener_booleans([],0).
gener_booleans([true|Xs],N) :- N>0, N1 is N-1, gener_booleans(Xs,N1).
gener_booleans([false|Xs],N) :- N>0, N1 is N-1, gener_booleans(Xs,N1).
于 2012-04-29T15:44:08.403 回答