suma([], Sum, Sum, Ilosc, Ilosc). suma([H|T], Sum, Sum1, Ilosc, Ilosc1) :- Nilosc is Ilosc + 1, Nsuma is Sum1 + H, suma(T, Sum, Nsuma, Ilosc, Nilosc). sred(L, Sr) :- suma(L, S, 0, I, 0), Sr is S/I. wari(L, W) :- sred(L, Sr), rozn2(L, H, Sr), suma(H, Suma, 0, Ilosc, 0), W is Suma/Ilosc. rozn2([], [], _). rozn2([H|T], [R|T1], Sr) :- R is (H - Sr)*(H - Sr), rozn2(T, T1, Sr). odch(L, O) :- wari(L, War), O is sqrt(War). korel(L1, L2, R) :- sred(L1, Sr1), sred(L2, Sr2), rozn(L1, K1, Sr1), rozn(L2, K2, Sr2), mnoz(K1, K2, Sr2), suma(K3, Cov, 0, Ilosc, 0), odch(L1, O1), odch(L2, O2), R is Cov/(Ilosc*O1*O2). rozn([], [], _). rozn([H|T], [R|T1], Sr) :- R is H - Sr, rozn(T, T1, Sr). mnoz([], [], []). mnoz([H1|T1], [H2|T2], [H3|T3]) :- H3 is H1*H2, mnoz(T1, T2, T3). test :- korel([1, 5, 3, 4, 6], [8, 12, 3, 5, 9], K).