title: Python Sudoku Solver goes into an infinite loop, How could I limit the amount of loops within the function?
body: <p>I have the following code that enters an infinite loop as the puzzle has many solutions.</p>
  <p>However, I am struggling to understand how I could limit the amount of solutions printed out without affecting how the function iterates.</p>
  <p>I tried using a while loop inside the <code>solve()</code> function but that didn't work.</p>
  <pre><code>import numpy as np
  
  # Add the puzzle you want to solve here:
  grid = [[0, 0, 0, 3, 0, 4],
          [0, 0, 0, 0, 6, 5],
          [0, 2, 0, 0, 0, 1],
          [3, 0, 0, 0, 4, 0],
          [2, 4, 0, 0, 0, 0],
          [6, 0, 5, 0, 0, 0]
          ]
  
  
  def possible(y, x, n):
      global grid
      for i in range(0, 6):
          if grid[y][i] == n:
              return False
  
      for i in range(0, 6):
          if grid[i][x] == n:
              return False
  
      x0 = (x//3)*3
      y0 = (y//3)*3
  
      for i in range(0, 3):
          for j in range(0, 3):
              if grid[y0+i][x0+j] == n:
                  return False
  
      return True
  
  
  print(np.matrix(grid))
  
  
  def solve():
      global grid
      for y in range(6):
          for x in range(6):
              if grid[y][x] == 0:
                  for n in range(1, 10):
                      if possible(y, x, n):
                          grid[y][x] = n
                          solve()
                          grid[y][x] = 0
                  return
      print(np.matrix(grid))
  </code></pre>