2012-04-29 6 views
1

プロローグでブール値のリストを生成する必要があります。プロローグでブール値のリストを生成する

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

ここに別の解決策へのリンクがありますが、これをブーリアンに適用する方法はわかりません。 Get all sets of list in prolog 誰でも手伝いできますか? P.Sリストの量は2^Nです。 ありがとう!

答えて

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). 
3

あなたのプロローグは、(SWIとYAPなど)maplist述語を持っている場合は:

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

(それはまた、ブールをチェックすることができるので、私は述語booleansと改名は、Prologでプログラミングする場合、宣言の名前を好みます。 )

+1

また、GNU-Prologには 'maplist/2 .'があります。しかし、YAPだけには '' library(lambda) '(http://www.complang.tuwien.ac.at/ulrich/Prolog-inedit/ISO-Hiord)がプリインストールされています!許可: 'maplist(\ X ^(X = true; X = false)、Xs)'。 BTW:わからない:型は 'bool'か' boolean'でなければならない? – false

関連する問題