このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1320365280/328
#  【質問テンプレ】  
#  [1] 授業単元:多次元配列 
#  [2] 問題文(含コード&リンク): 要素が整数からなる3x3の表データを scanf()関数を用いて読み込み、対角線を軸と して要素を入れ替えた表を表示するプログラ ムを作りなさい。

'要素が整数からなる3x3の表データを scanf()関数を用いて読み込み、対角線を軸として要素を入れ替えた表を表示する'(_対角線を軸として要素を入れ替えた表) :-
        '要素が整数からなる3x3の表データを scanf()関数を用いて読み込み'(_表),
        '対角線を軸として要素を入れ替えた表を表示する'(_表,_対角線を軸として要素を入れ替えた表).

'要素が整数からなる3x3の表データを scanf()関数を用いて読み込み'(_表) :-
        length(_表,3),
        findall(L,(
                   append(_,[L|_],_表),
                   write('3列をカンマ区切りで入力して下さい : '),
                   readln(L)),
               _表).

'対角線を軸として要素を入れ替えた表を表示する'(_表,_対角線を軸として要素を入れ替えた表) :-
        転置(_表,_対角線を軸として要素を入れ替えた表),
        行列を表示する(_対角線を軸として要素を入れ替えた表).
'対角線を軸として要素を入れ替えた表を表示する'(_表,_対角線を軸として要素を入れ替えた表) :-
        表を180度回転する(_表,_表_2),
        転置(_表_2,_対角線を軸として要素を入れ替えた表),
        行列を表示する(_対角線を軸として要素を入れ替えた表).

'表を180度回転する'(_表,_表_2) :-
        reverse(_表,_表_1),
        findall(L2,(
                    append(_,[L1|_],_表_1),
                    reverse(L1,L2)),
                _表_2).

行列を表示する(_行列) :-
        append(_,[_行|R],_行列),
        concat_atom(_行,' | ',_行表示),
        writef('%t\n',[_行表示]),
        R = [].