1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | -module(prog). -compile(export_all). -define(R, 503). %% main -program start point main() -> io:format("Main at: ~p~n",[self()]), case io:fread("","~d") of eof -> false; {ok,[X]} -> main(X) end. main([Arg]) -> main(list_to_integer(Arg)); main(Arg) when is_integer(Arg) -> start(Arg), receive {done, Id} -> io:format("End Id: ~p~n",[Id]) end, erlang:halt(). start(Num) -> FPid = spawn(?MODULE,spawn_mode,[1,self()]), FPid ! Num, receive {getfirst,?R,LPid} -> LPid ! FPid end. spawn_mode(Id,Main) when Id == ?R -> Main ! {getfirst, Id, self()}, receive OutPid when is_pid(OutPid)-> norm_mode(Id,OutPid,Main) end; spawn_mode(Id,Main) -> OutPid = spawn(?MODULE,spawn_mode,[Id + 1,Main]), norm_mode(Id,OutPid,Main). norm_mode(Id,OutPid,Main) -> receive 1 -> Main ! {done, Id}; X -> %% io:format("Received: ~p at ID: ~p Pid: ~p~n",[X,Id,self()]), OutPid ! (X - 1), norm_mode(Id,OutPid,Main) end. |
-
upload with new input
-
結果: Success time: 4.84s 記憶體: 9472 kB 回傳值: 0
7000000
Main at: <0.1.0> End Id: 252
-
結果: Success time: 4.85s 記憶體: 9472 kB 回傳值: 0
7000000
Main at: <0.1.0> End Id: 252
-
結果: Internal error time: 0s 記憶體: 0 kB 信號(Signal): 0
7000000
-
結果: Success time: 4.17s 記憶體: 9472 kB 回傳值: 0
6000000
Main at: <0.1.0> End Id: 216
-
結果: Success time: 3.5s 記憶體: 9472 kB 回傳值: 0
5000000
Main at: <0.1.0> End Id: 180
-
結果: Success time: 0.51s 記憶體: 9472 kB 回傳值: 0
500000
Main at: <0.1.0> End Id: 18
-
結果: Success time: 0.24s 記憶體: 9472 kB 回傳值: 0
100000
Main at: <0.1.0> End Id: 406
-
結果: Success time: 0.19s 記憶體: 9472 kB 回傳值: 0
10000
Main at: <0.1.0> End Id: 443
-
結果: Success time: 0.18s 記憶體: 9472 kB 回傳值: 0
10
Main at: <0.1.0> End Id: 10



