このディレクトリの索引
#  
#  [1] 授業単元: プログラミング 
#  [2] 問題文(含コード&リンク):◎見にくくなりそうなので一番下に書きます。 
#  [3] 環境 
#   [3.1] OS:Windows 
#   [3.2] コンパイラ名とバージョン:VC++ 2005 
#   [3.3] 言語:C++ 
#  [4] 期限:明日 11/3 
#  [5] その他の制限: 標準入出力ストリームで、 
#  
#  整数除算による商の計算表(下記の例を参照)を表示する. 
#  
#  
#    | 1 2 3 4 5 6 7 8 9 
#  --+------------------ 
#  1 | 1 0 0 0 0 0 0 0 0 
#  2 | 2 1 0 0 0 0 0 0 0 
#  3 | 3 1 1 0 0 0 0 0 0 
#  4 | 4 2 1 1 0 0 0 0 0 
#  5 | 5 2 1 1 1 0 0 0 0 
#  6 | 6 3 2 1 1 1 0 0 0 
#  7 | 7 3 2 1 1 1 1 0 0 
#  8 | 8 4 2 2 1 1 1 1 0 
#  9 | 9 4 3 2 1 1 1 1 1 
#  
#  これを出力するようなプログラムを教えてください。

'整数除算による商の計算表(下記の例を参照)を表示する' :-
        商の計算表本体(_商の計算表本体),
        商の計算表見出し表示,
        商の計算表本体の表示(_商の計算表本体).

商の計算表本体(_商の計算表本体) :-
        findall(_表示行,(
                    between(1,9,_被除数),
                    表示行(_被除数,_表示行)),
                _商の計算表本体).

表示行(_被除数,_表示行) :-
        findall(N,(
                    between(1,9,_除数),
                    N is _被除数 // _除数),
                _商表示ならび),
        atomic_list_concat([_被除数,'|'|_商表示ならび],' ',_表示行).

商の計算表見出し表示 :-
        write('  | 1 2 3 4 5 6 7 8 9\n--+------------------\n').

商の計算表本体の表示(_商の計算表本体) :-
        append(_,[_表示行|R],_商の計算表本体),
        write('%t\n',[_表示行]),
        R = [].