10/01/16 08:16:13
>>258
% Prolog
重み付け平均をRLにセット(AL,RL) :-
_重みならび = [1,3,4,3,1],
sum(_重みならび,_重み合計),
list_nth(N-2,AL,A_2),
list_nth(N-1,AL,A_1),
list_nth(1,AL,A1),
list_nth(2,AL,A2),
append([A_2,A_1|AL],[A1,A2],AL2),
N2 is N + 2,
重み付け平均をRLにセット(3,N2,_重みならび,_重み合計,AL2,RL).
重み付け平均をRLにセット(M,N,_重みならび,_重み合計,AL,[]) :- M > N,!.
重み付け平均をRLにセット(M,N,_重みならび,_重み合計,AL,[_重み付け平均|R]) :-
findall(B,(for(M-2,U,M+2),list_nth(U,AL,B)),L1),
重み付け平均(L1,_重みならび,_重み合計,0,_重み付け平均),
M2 is M + 1,
重み付け平均をRLにセット(M2,N,_重みならび,_重み合計,AL,R).
重み付け平均([A|R1],[B|R2],_重み合計,S1,_重み付け平均) :-
_重み付け平均 is S1 / _重み合計,!.
重み付け平均([A|R1],[B|R2],_重み合計,S1,_重み付け平均) :-
S2 is S1 + A * B,
重み付け平均(R1,R2,_重み合計,S2,_重み付け平均).