>>778
% Prolog

要素変換([],_,[]) :- !.
グリッド要素変換([[X,Y,V],[X2,Y2,V2]|R1],Sum,[[X,Y1,Avg]R2]) :-
   \+(X=X2),
   Y1 is Y // 5,
   M is Y mod 5,
   Avg is (Sum + V) / M,
   グリッド要素変換([[X2,Y2,V2]|R1],0,R2),!.
グリッド要素変換([[X,Y,V],[X,Y2,V2]|R1],Sum,[[X,Y1,Avg]|R2]) :-
   0 is Y mod 5,
   Y1 is Y // 5,
   Avg is (Sum + V) / 5,
   グリッド要素変換([[X2,Y2,V2]|R1],0,R2),!.
グリッド要素変換([[X,Y,V],[X,Y2,V2]|R1],Sum,L) :-
   Sum2 is Sum + V,
   グリッド要素変換([[X,Y2,V2]|R1],Sum2,L),!.