我需要在 prolog 中生成一个布尔值列表。
?- gener_booleans(Xs,3).
Xs = [true, true, true] ;
Xs = [true, true, false] ;
...
Xs = [false, false, false] ;
这是另一个解决方案的链接,但我不知道如何将其应用于布尔值。 获取序言中的所有列表集 有人可以帮忙吗?PS列表的数量是2 ^ N。谢谢!
我需要在 prolog 中生成一个布尔值列表。
?- gener_booleans(Xs,3).
Xs = [true, true, true] ;
Xs = [true, true, false] ;
...
Xs = [false, false, false] ;
这是另一个解决方案的链接,但我不知道如何将其应用于布尔值。 获取序言中的所有列表集 有人可以帮忙吗?PS列表的数量是2 ^ N。谢谢!
如果您的 Prolog 有maplist
谓词(如 SWI 和 YAP):
booleans(Xs, N) :-
length(Xs, N),
maplist(boolean, Xs).
boolean(true).
boolean(false).
(我重命名了谓词booleans
,因为它也可以检查布尔值;在 Prolog 中编程时更喜欢声明性名称。)
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).