このディレクトリの索引
#  出題場所 :: http://toro.2ch.net/test/read.cgi/tech/1390525149/69
#  お題: 
#  n=1のとき 
#  01 
#  10 
#   
#  n=2のとき 
#  0011 
#  0011 
#  1100 
#  1100 
#   
#  n=3のとき 
#  000111 
#  000111 
#  000111 
#  111000 
#  111000 
#  111000 
#   
#  を表示する。 
# 
# 

ブロックを表示する(_n,LL) :-
        '_n * _n のブロックを生成する'(_n,0,1,LL1),
        '_n * _n のブロックを生成する'(_n,1,0,LL2),
        表示する(LL1,LL2).

'_n * _n のブロックを生成する'(_n,A,B,LL) :-
        findall(L,(
                    all(_n,L1,A),
                    all(_n,L2,B),
                    between(1,_n,_),
                    append(L1,L2,L)),
                LL).

all(0,[],_) :- !.
all(N,[A|R],A) :-
        N_1 is N - 1,
        all(N_1,R,A).

表示する(LL1,LL2) :-
        forall(member(L1,LL1),(atomic_list_concat(L1,A),writef('%t\n',[A]))),
        forall(member(L2,LL2),(atomic_list_concat(L2,B),writef('%t\n',[B]))),