Show a nested loop which searches a two-dimensional array filled with random numbers uniformly distributed over 



[
1
,
…
,
20
]


{\displaystyle [1,\ldots ,20]}

.

The loops iterate rows and columns of the array printing the elements until the value 



20


{\displaystyle 20}

 is met.

Specifically, this task also shows how to break out of nested loops.



Related tasks

   Loop over multiple arrays simultaneously
   Loops/Break
   Loops/Continue
   Loops/Do-while
   Loops/Downward for
   Loops/For
   Loops/For with a specified step
   Loops/Foreach
   Loops/Increment loop index within loop body
   Loops/Infinite
   Loops/N plus one half
   Loops/Nested
   Loops/While
   Loops/with multiple ranges
   Loops/Wrong ranges


 
(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))
 