このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1354715494/11
#  【お題】
#  [1, 2, 3, 4, 5, 6, 7]のようなリストを 
#  次のような表に整形して出力せよ 
#   
#  <table> 
#  <tr><td>1</td><td>2</td><td>3</td></tr> 
#  <tr><td>4</td><td>5</td><td>6</td></tr> 
#  <tr><td>7</td><td>&nbsp;</td><td>&nbsp;</td></tr> 
#  </table> 
# 
# 

'[1, 2, 3, 4, 5, 6, 7]のようなリストを
次のような表に整形して出力せよ

<table>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>4</td><td>5</td><td>6</td></tr>
<tr><td>7</td><td>&nbsp;</td><td>&nbsp;</td></tr>
</table>'(L) :-
        'リストを整形して出力せよ'(L).

'リストを整形して出力せよ'([]) :- !.
'リストを整形して出力せよ'([A,B,C|R]) :-
        '3つ組の出力'(A,B,C),
        'リストを整形して出力せよ'(R),!.
'リストを整形して出力せよ'(L) :-
        '最後の組が3つ組にならなかった場合の特別な出力'(L).

'3つ組の出力'(A,B,C) :-
        writef('<tr><td>%t</td><td>%t</td><td>%t</td></tr>\n',[A,B,C]).

'最後の組が3つ組にならなかった場合の特別な出力'(_最後の組) :-
        値のない部分は空白で埋める(_最後の組,A,B,C),
        writef('<tr><td>%t</td><td>%t</td><td>%t</td></tr>\n',[A,B,C]).

値のない部分は空白で埋める(L,A,B,C) :-
        append(L,L2,[A,B,C]),
        all(L2,'&nbsp;').