ÿþ//RCI¢•pe function RCI1; input s(series), period(number), f(number); result res(series); vars ptbl(series), ttbl(series), i(number), j(number), k(number), w(number), sum(number), P3(number); begin f := max(front(s), f); P3 := 6 * 100 / (period * (period * period - 1)); ptbl := makeseries(1, period, 0); ttbl := makeseries(1, period, 0); for i := 1 to period do begin ptbl[i] := s[f + i - 1]; ttbl[i] := period - i + 1; end; //Ð0Ö0ë0½0ü0È0 for i := 1 to period do begin for j := 1 to period do begin if ptbl[i] > ptbl[j] then begin w := ptbl[i]; ptbl[i] := ptbl[j]; ptbl[j] := w; w := ttbl[i]; ttbl[i] := ttbl[j]; ttbl[j] := w; end; end; end; //ÿÞVîvn02ÿ#ÿ)ÿŠ—{ sum := 0; for j := 1 to period do begin w := ttbl[j] - j; sum := sum + w * w; end; res[period] := 100 - sum * P3; //á0¤0ó0æQt for i := f + period to back(s) do begin //äSD0Ç0ü0¿0JRd–û0Bf“•é0ó0¯0’0hQf0·0Õ0È0 for j := 1 to period do begin if ttbl[j] = period then begin if j < period then begin for k := j to period - 1 do begin ptbl[k] := ptbl[k + 1]; ttbl[k] := ttbl[k + 1] + 1; end; end; ptbl[period] := 0; ttbl[period] := 0; break; end; ttbl[j] := ttbl[j] + 1; end; //°eW0D0Ç0ü0¿0?ceQû02ÿ#ÿ)ÿŠ—{ sum := 0; for j := 1 to period do begin if ptbl[j] < s[i] then begin if j < period then begin for k := period - 1 downto j do begin ptbl[k + 1] := ptbl[k]; ttbl[k + 1] := ttbl[k]; w := ttbl[k + 1] - (k + 1); sum := sum + w * w; end; end; ptbl[j] := s[i]; ttbl[j] := 1; w := ttbl[j] - j; sum := sum + w * w; break; end; w := ttbl[j] - j; sum := sum + w * w; end; res[i] := 100 - sum * P3; end; end.