GroovyでSleep Sortを実装する
常識を覆すソートアルゴリズム!その名も"sleep sort"!
Sleep sortの各言語での実装まとめ
Groovy版がなさそうなので、実装してみた。
ソース
/* 100ミリ秒の単位にしないと、スレッドを起こす処理の方が重くて 正しくsortされなかった。 スレッドを起こす時間の誤差がソートする対象の数とマシンスペックに 依存するだろうな。 */ def worker = { SleepTime -> Thread.sleep(SleepTime*100) println SleepTime } args.each { SleepTime -> Thread.start worker.curry(new Integer(SleepTime)) }
Groovy イン・アクションで、クロージャーのカリー化ってところを読んでたので、
ちょっと使ってみたかったのよ。
実行結果
[D:\workspace\groovy_SandBox]groovy SleepSort.groovy 5 1 3 4 2 1 2 3 4 5
実行環境
- OS:Windows XP
- Groovy Version: 1.6.5
- JVM: 1.6.0_12