This commit is contained in:
Ingy döt Net 2013-10-27 22:24:23 +00:00
parent 6f050a029e
commit 776bba907c
3887 changed files with 59894 additions and 7280 deletions

View file

@ -0,0 +1 @@
sleepsort{{r}⎕TSYNC{r,,⎕DL }&¨,r}

View file

@ -3,7 +3,7 @@ import std.stdio, std.conv, std.datetime, core.thread;
final class SleepSorter: Thread {
private immutable uint val;
this(in uint n) {
this(in uint n) /*pure nothrow*/ {
super(&run);
val = n;
}
@ -17,5 +17,5 @@ final class SleepSorter: Thread {
void main(in string[] args) {
if (args.length > 1)
foreach (arg; args[1 .. $])
(new SleepSorter(to!uint(arg))).start();
new SleepSorter(arg.to!uint).start;
}

View file

@ -0,0 +1,18 @@
#!/usr/bin/env escript
%% -*- erlang -*-
%%! -smp enable -sname sleepsort
main(Args) ->
lists:foreach(fun(Arg) ->
timer:send_after(5 * list_to_integer(Arg), self(), Arg)
end, Args),
loop(length(Args)).
loop(0) ->
ok;
loop(N) ->
receive
Num ->
io:format("~s~n", [Num]),
loop(N - 1)
end.

View file

@ -0,0 +1,9 @@
procedure main(A)
every insert(t:=set(),mkThread(t,!A))
every spawn(!t) # start threads as closely grouped as possible
while (*t > 0) do write(<<@)
end
procedure mkThread(t,n) # 10ms delay scale factor
return create (delay(n*10),delete(t,&current),n@>&main)
end

View file

@ -1,13 +1,15 @@
extern mod std;
use std::timer::sleep;
use std::uv::global_loop;
// rust 0.8
fn main() {
for os::args().tail().each |&arg| {
do task::spawn {
let n = uint::from_str(arg).get();
sleep(global_loop::get(), n);
io::println(arg);
fn main()
{
let args = std::os::args();
for arg in args.tail().iter()
{
let n = from_str::<u64>(*arg).unwrap();
do std::task::spawn
{
std::rt::io::timer::sleep(n);
println!("{}", n);
}
}
}