Task

Using either native language concurrency syntax or freely available libraries, write a program to display the strings "Enjoy" "Rosetta" "Code", one string per line, in random order.

Concurrency syntax must use threads, tasks, co-routines, or whatever concurrency is called in your language.




import time
import rand
import rand.pcg32
import rand.seed
 
fn main() {
    words := ['Enjoy', 'Rosetta', 'Code']
    seed_u64 := u64(time.now().unix_time_milli())
    q := chan string{}
    for i, w in words {
        go fn (q chan string, w string, seed_u64 u64) {
            mut rng := pcg32.PCG32RNG{}
            time_seed := seed.time_seed_array(2)
            seed_arr := [u32(seed_u64), u32(seed_u64 >> 32), time_seed[0], time_seed[1]]
            rng.seed(seed_arr)
            time.sleep(time.Duration(rng.i64n(1_000_000_000)))
            q <- w
        }(q, w, seed_u64 + u64(i))
    }
    for _ in 0 .. words.len {
        println(<-q)
    }
}