このディレクトリの索引
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月開講です。ポインタはまだ習ってません 
# 
# 
'A[m][n]には値 (m+n) % 31が入っているものとする。'([],[]) :- !.
'A[m][n]には値 (m+n) % 31が入っているものとする。'(M,N,Y,X) :-
    N > 31,
    M2 is M + 1,
    'A[m][n]には値 (m+n) % 31が入っているものとする。'(M,N,Y,X).
'A[m][n]には値 (m+n) % 31が入っているものとする。'(M,N,[],[]) :- !.

ならびを2要素ごとに纏める([],[]) :- !.
ならびを2要素ごとに纏める([L1,L2|R1],[L3|R2]) :-
  append(L1,L2,L3),
  ならびを2要素ごとに纏める(R1,R2).

'A[m][n]には値 (m+n) % 31が入っている'(A) :-
  'A[m][n]には値 (m+n) % 31が入っている'(0,A),!.

'A[m][n]には値 (m+n) % 31が入っている'(M,[]) :- M > 31,!.
'A[m][n]には値 (m+n) % 31が入っている'(M,[L|R]) :-
  'A[m][n]には値 (m+n) % 31が入っている'(M,0,L),
  M2 is M + 1,
  'A[m][n]には値 (m+n) % 31が入っている'(M2,R).

'A[m][n]には値 (m+n) % 31が入っている'(M,N,[]) :- N > 63,!.
'A[m][n]には値 (m+n) % 31が入っている'(M,N,[X|R]) :-
  X is (M + N) mod 31,
  N2 is N + 1,
  'A[m][n]には値 (m+n) % 31が入っている'(M,N2,R),!.