Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,41 @@
|
|||
main() ->
|
||||
SMA3 = sma(3),
|
||||
SMA5 = sma(5),
|
||||
Ns = [1, 2, 3, 4, 5, 5, 4, 3, 2, 1],
|
||||
lists:foreach(
|
||||
fun (N) ->
|
||||
io:format("Added ~b, sma(3) -> ~f, sma(5) -> ~f~n",[N,next(SMA3,N),next(SMA5,N)])
|
||||
end, Ns),
|
||||
stop(SMA3),
|
||||
stop(SMA5).
|
||||
|
||||
sma(W) ->
|
||||
{sma,spawn(?MODULE,loop,[W,[]])}.
|
||||
|
||||
loop(Window, Numbers) ->
|
||||
receive
|
||||
{_Pid, stop} ->
|
||||
ok;
|
||||
{Pid, N} when is_number(N) ->
|
||||
case length(Numbers) < Window of
|
||||
true ->
|
||||
Next = Numbers++[N];
|
||||
false ->
|
||||
Next = tl(Numbers)++[N]
|
||||
end,
|
||||
Pid ! {average, lists:sum(Next)/length(Next)},
|
||||
loop(Window,Next);
|
||||
_ ->
|
||||
ok
|
||||
end.
|
||||
|
||||
stop({sma,Pid}) ->
|
||||
Pid ! {self(),stop},
|
||||
ok.
|
||||
|
||||
next({sma,Pid},N) ->
|
||||
Pid ! {self(), N},
|
||||
receive
|
||||
{average, Ave} ->
|
||||
Ave
|
||||
end.
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
9> sma:main().
|
||||
Added 1, sma(3) -> 1.000000, sma(5) -> 1.000000
|
||||
Added 2, sma(3) -> 1.500000, sma(5) -> 1.500000
|
||||
Added 3, sma(3) -> 2.000000, sma(5) -> 2.000000
|
||||
Added 4, sma(3) -> 3.000000, sma(5) -> 2.500000
|
||||
Added 5, sma(3) -> 4.000000, sma(5) -> 3.000000
|
||||
Added 5, sma(3) -> 4.666667, sma(5) -> 3.800000
|
||||
Added 4, sma(3) -> 4.666667, sma(5) -> 4.200000
|
||||
Added 3, sma(3) -> 4.000000, sma(5) -> 4.200000
|
||||
Added 2, sma(3) -> 3.000000, sma(5) -> 3.800000
|
||||
Added 1, sma(3) -> 2.000000, sma(5) -> 3.000000
|
||||
ok
|
||||
Loading…
Add table
Add a link
Reference in a new issue