このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1320365280/36
#  [1] 授業単元:C言語 
#  [2] 問題文:整数型の要素を最大20個格納できる配列を宣言し,先頭から10個分には2を, 
#  後半の10個分には3を格納せよ。正しく格納されたことを出力する必要があるが, 
#  出力する際には2を10個分空白区切りで出力し,改行した後に3を10個分空白区切りで出力すること。
#  

'整数型の要素を最大20個格納できるならびを宣言し,先頭から10個分には2を,後半の10個分には3を格納せよ。' :-
        '整数型の要素を最大20個格納できるならびを宣言し'(L),
        '先頭から10個分には2を,後半の10個分には3を格納する'(L).

'整数型の要素を最大20個格納できるならびを宣言し'(L) :-
        length(L,20).

'先頭から10個分には2を,後半の10個分には3を格納する'(L) :-
        append(L1,L2,L),
        '先頭から10個分には2を'(L1),
        '後半の10個分には3を'(L2),
        格納する(L).

'先頭から10個分には2を'(L1) :-
        length(L1,10),
        all(L1,2),!.

'後半の10個分には3を'(L2) :-
        length(L2,10),
        all(L2,3),!.

格納する(L) :-
        assertz('整数型の要素を最大20個格納できるならび'(L)).


'正しく格納されたことを出力する必要があるが,出力する際には2を10個分空白区切りで出力し,改行した後に3を10個分空白区切りで出力すること。' :-
        '整数型の要素を最大20個格納できるならび'(L),
        length(L1,10),
        length(L2,10),
        '2を10個分空白区切りで出力し'(L,L1,L2),
        '改行した後に3を10個分空白区切りで出力する'(L,L1,L2).

'2を10個分空白区切りで出力し'(L,L1,L2) :-
        append(L1,L2,L),
        concat_atom(L1,' ',S1),
        writef('%t',[S1]).

'改行した後に3を10個分空白区切りで出力する'(L,L1,L2) :-
        append(L1,L2,L),
        concat_atom(L2,' ',S2),
        writef('\n%t\n',[S2]).),