スリープソートは、インターネットで見つけた整数ソートアルゴリズムです。出力ストリームを開き、各入力番号に対して並列に、number秒遅延してその番号を出力します。遅延のため、最も大きい番号が最後に出力されます。私はそれがO(n + m)を持っていると推定します。ここで、nは要素の数であり、mは最大数です。
Bashの元のコードは次のとおりです。
#!/bin/bash
function f() {
sleep "$1"
echo "$1"
}
while [ -n "$1" ]
do
f "$1" &
shift
done
wait
これが擬似コードです
sleepsort(xs)
output = []
fork
for parallel x in xs:
sleep for x seconds
append x to output
wait until length(output) == length(xs)
return output
タスクは、選択したプログラミング言語の関数としてスリープソートを実装することです。競合状態などの同時実行要因を無視して、共有リソースをロックすることはできません。最短のコードが優先されます。関数定義はコード長にカウントされます。
入力リストは負でない整数のみに制限されており、入力リストの長さはかなり長い(少なくとも10個の数字をテストする)と予想されるため、競合状態は発生しません。競合状態が発生しないと仮定します。