このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1263824755/483
#  [1] C言語プログラミング初歩(専門学校) 
#  [2] int型の配列変数A[64][32]をB[32][64]に代入する. 
#  次の対応があるようにすること 
#  A[0][0] -> A[0][1] -> A[0][31] ->A[1][0] ->....->A[63][31] 
#  B[0][0] -> B[0][1]->  B[0][31] -> B[0][32]->....->B[31][63] 
#  (上の段と下の段が一致) 
#  A[m][n]には値 (m+n) % 31が入っているものとする。 
#  [3] Windows Vista /Visual studio 2008/C言語 
#  [4] 2/15迄 
#  [5] 1月開講です。ポインタはまだ習ってません 
# 

ならびの構造変換(_変換対象ならび,_変換後ならびの列数,_変換後ならび) :-
        最上位構造のみ平滑化(_変換対象ならび,_平滑化されたならび),
        length(L,_変換後ならびの列数),
        findall(L,append(L,_,_平滑化されたならび),_変換後ならび).

最上位構造のみ平滑化([],[]) :- !.
最上位構造のみ平滑化([L1|R1],L) :-
        最上位構造のみ平滑化(R1,L2),
        append(L1,L2,L),!.