このディレクトリの索引
#  
#  再帰述語を使わずに行列の転置を定義する。
#  

転置(_行列,_転置された行列) :-
        列形式を得る(_行列,_列形式),
        findall(_列ならび,(
                    append(L0,[_列の値|_],_列形式),
                    列ならびを得る(_行列,L0,_列の値,_列ならび)),
                _転置された行列).

列形式を得る(_行列,_列形式) :-
        列数を得る(_行列,_列数),
        length(_列形式,_列数).

列数を得る(_行列,_列数) :-
        _行列 = [_列_1|_],
        length(_列_1,_列数).

列ならびを得る(_行列,L0,_列の値,_列ならび) :-
        findall(_列の値,(
                   append(_,[L|_],_行列),
                   列の値(L,L0,_列の値)),
                _列ならび).

列の値(L,L0,A) :-
        append(L0,[A|_],L).