Uyku Sıralama, Internet'te bulduğum bir tamsayı sıralama algoritmasıdır. Bir çıkış akışını açar ve her giriş numarası için paralel olarak, saniye saniye geciktirir ve bu sayıyı çıkarır. Gecikmeler nedeniyle, en yüksek sayı en son verilecektir. O öğesinin (n + m) olduğunu tahmin ediyorum, burada n elementlerin sayısı ve m en yüksek sayıdır.
İşte Bash'deki orijinal kod
#!/bin/bash
function f() {
sleep "$1"
echo "$1"
}
while [ -n "$1" ]
do
f "$1" &
shift
done
wait
İşte sözde kod
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
Göreviniz, Uyku Sıralama'yı seçtiğiniz programlama dilinde bir işlev olarak uygulamaktır. Yarış koşulları gibi eşzamanlılık faktörlerini ihmal edebilir ve paylaşılan kaynakları asla kilitlemeyebilirsiniz. En kısa kod kazanır. Fonksiyon tanımı kod uzunluğuna göre sayılır.
Giriş listesi yalnızca negatif olmayan tam sayılarla sınırlıdır ve giriş listesinin uzunluğunun makul uzunlukta olması beklenir (en az 10 sayı test edin), böylece yarış koşulları asla gerçekleşmez. ve yarış koşullarının asla gerçekleşmeyeceğini varsaymak.