RosettaCodeData/Task/Loops-Nested/Qi/loops-nested.qi

16 lines
575 B
Plaintext

(define random-list
0 -> []
M -> [(1+ (RANDOM 20)) | (random-list (1- M))])
(define random-array
0 _ -> []
N M -> [(random-list M) | (random-array (1- N) M)])
(define array->list
_ [] -> [] \ "end outer loop" \
Stop [[] | Ra] -> (array->list Stop Ra) \ "outer loop" \
Stop [[Stop | _ ] | _ ] -> [] \ "break out from inner loop" \
Stop [[X | Rl] | Ra] -> [X | (array->list Stop [Rl | Ra])]) \ "inner loop" \
(array->list 20 (random-array 10 10))