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


import random, strutils
 
const ArrSize = 10
 
var a: array[ArrSize, array[ArrSize, int]]
var s = ""
 
randomize()   # Different results each time this runs.
 
# Initialize using loops on items rather than indexes.
for row in a.mitems:
  for item in row.mitems:
    item = rand(1..20)
 
block outer:
  # Loop using indexes.
  for i in 0..<ArrSize:
    for j in 0..<ArrSize:
      if a[i][j] < 10: s.add(' ')
      addf(s, "$#", $a[i][j])
      if a[i][j] == 20: break outer
      s.add(", ")
    s.add('\n')
 
echo s