수면 정렬은 인터넷에서 찾은 정수 정렬 알고리즘입니다. 출력 스트림을 열고 각 입력 숫자에 대해 병렬로 숫자 초 동안 지연시키고 해당 숫자를 출력합니다. 지연으로 인해 가장 높은 숫자가 마지막에 출력됩니다. 나는 그것이 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 개의 숫자 테스트) 레이스 조건이 발생하지 않습니다. 경쟁 조건이 발생하지 않는다고 가정합니다.