backtracking

Consideremos

import numpy as np
a = np.array([[1, 2, 3],[4, 5, 6],[7,8,9]])
print(a)
[[1 2 3]
 [4 5 6]
 [7 8 9]]
for i in range(3):
 for j in range(3):
  print('a(',i,',',j,')=',a[i,j])
for i in range(3):
 for j in range(3):
  print('a(',i,',',j,')=',a[i,j])

a( 0 , 0 )= 1
a( 0 , 1 )= 2
a( 0 , 2 )= 3
a( 1 , 0 )= 4
a( 1 , 1 )= 5
a( 1 , 2 )= 6
a( 2 , 0 )= 7
a( 2 , 1 )= 8
a( 2 , 2 )= 9


a[0,0] a[0,1] a[0,2]
a[1,0] a[1,1] a[1,2]
a[2,0] a[2,1] a[2,2]
for i in range(3):
 for j in range(3):
  a[i,j]=0



for num1 in range(1,4):
 if num1 == 1:
  a[0,0]=num1
  print()
#  print(a)
  for num2 in range(1,4):
   a[0,1]=num2
   if a[0,0]!=a[0,1]:
    print()
    print(a)
for i in range(3):
 for j in range(3):
  a[i,j]=0



for num1 in range(1,4):
 if num1 == 1:
  a[0,0]=num1
#  print()
#  print(a)
  for num2 in range(1,4):
   a[0,1]=num2
   if a[0,0]!=a[0,1]:
#    print()
#    print(a)
#    print('Tercer nivel')
    for num3 in range(1,4):
     a[0,2]=num3
     if a[0,0]!=a[0,1]!=a[0,2]:         
      print()
      print(a)
for i in range(3):
 for j in range(3):
  a[i,j]=0



for num1 in range(1,4):
 if num1 == 1:
  a[0,0]=num1
#  print()
#  print(a)
  for num2 in range(1,4):
   a[0,1]=num2
   if a[0,0]!=a[0,1]:
#    print()
#    print(a)
#    print('Tercer nivel')
    for num3 in range(1,4):
     a[0,2]=num3
     if a[0,2]!=a[0,0] and a[0,2]!=a[0,1]:
      print('cuarto nivel')
      for num4 in range(1,4):
       a[1,0]=num4
       if a[1,0]!=a[0,0]:
        print()
        print(a)
#      print()
#      print(a)
for i in range(3):
 for j in range(3):
  a[i,j]=0



for num1 in range(1,4):

 if num1 == 1:
  a[0,0]=num1

  for num2 in range(1,4):
   a[0,1]=num2
   if a[0,0]!=a[0,1]:

    for num3 in range(1,4):
     a[0,2]=num3
     if a[0,2]!=a[0,0] and a[0,2]!=a[0,1]:
         
      for num4 in range(1,4):
       a[1,0]=num4
       if a[1,0]!=a[0,0]:

        print('quinto piso')   
        for num5 in range(1,4):
         a[1,1]=num5
         if a[1,1]!=a[1,0] and a[1,1]!=a[0,1]:
          print()
          print(a)

for i in range(3):
for j in range(3):
a[i,j]=0

for num1 in range(1,4):

if num1 == 1:
a[0,0]=num1

for num2 in range(1,4):
a[0,1]=num2
if a[0,0]!=a[0,1]:

for num3 in range(1,4):
 a[0,2]=num3
 if a[0,2]!=a[0,0] and a[0,2]!=a[0,1]:

  for num4 in range(1,4):
   a[1,0]=num4
   if a[1,0]!=a[0,0]:

    for num5 in range(1,4):
     a[1,1]=num5
     if a[1,1]!=a[1,0] and a[1,1]!=a[0,1]:

      print('sexto piso')
      for num6 in range(1,4):
       a[1,2] = num6
       if a[1,2]!=a[1,1] and a[1,2]!=a[1,0] and a[1,2]!=a[0,2]:
        print()
        print(a)
for i in range(3):
 for j in range(3):
  a[i,j]=0



for num1 in range(1,4):

 if num1 == 1:
  a[0,0]=num1

  for num2 in range(1,4):
   a[0,1]=num2
   if a[0,0]!=a[0,1]:

    for num3 in range(1,4):
     a[0,2]=num3
     if a[0,2]!=a[0,0] and a[0,2]!=a[0,1]:
         
      for num4 in range(1,4):
       a[1,0]=num4
       if a[1,0]!=a[0,0]:

        for num5 in range(1,4):
         a[1,1]=num5
         if a[1,1]!=a[1,0] and a[1,1]!=a[0,1]:
             
          for num6 in range(1,4):
           a[1,2] = num6
           if a[1,2]!=a[1,1] and a[1,2]!=a[1,0] and a[1,2]!=a[0,2]:

            print('septimo piso')
            for num7 in range(1,4):
             a[2,0]=num7
             if a[2,0]!=a[1,0] and a[2,0]!=a[0,0]:
              print()
              print(a)
for i in range(3):
 for j in range(3):
  a[i,j]=0



for num1 in range(1,4):

 if num1 == 1:
  a[0,0]=num1

  for num2 in range(1,4):
   a[0,1]=num2
   if a[0,0]!=a[0,1]:

    for num3 in range(1,4):
     a[0,2]=num3
     if a[0,2]!=a[0,0] and a[0,2]!=a[0,1]:
         
      for num4 in range(1,4):
       a[1,0]=num4
       if a[1,0]!=a[0,0]:

        for num5 in range(1,4):
         a[1,1]=num5
         if a[1,1]!=a[1,0] and a[1,1]!=a[0,1]:
             
          for num6 in range(1,4):
           a[1,2] = num6
           if a[1,2]!=a[1,1] and a[1,2]!=a[1,0] and a[1,2]!=a[0,2]:

            for num7 in range(1,4):
             a[2,0]=num7
             if a[2,0]!=a[1,0] and a[2,0]!=a[0,0]:

              print('octavo piso')
              for num8 in range(1,4):
               a[2,1]=num8
               if a[2,1]!=a[2,0] and a[2,1]!=a[1,1] and a[2,1]!=a[0,1]:
                print()
                print(a)
for i in range(3):
 for j in range(3):
  a[i,j]=0



for num1 in range(1,4):

 if num1 == 1:
  a[0,0]=num1

  for num2 in range(1,4):
   a[0,1]=num2
   if a[0,0]!=a[0,1]:

    for num3 in range(1,4):
     a[0,2]=num3
     if a[0,2]!=a[0,0] and a[0,2]!=a[0,1]:
         
      for num4 in range(1,4):
       a[1,0]=num4
       if a[1,0]!=a[0,0]:

        for num5 in range(1,4):
         a[1,1]=num5
         if a[1,1]!=a[1,0] and a[1,1]!=a[0,1]:
             
          for num6 in range(1,4):
           a[1,2] = num6
           if a[1,2]!=a[1,1] and a[1,2]!=a[1,0] and a[1,2]!=a[0,2]:

            for num7 in range(1,4):
             a[2,0]=num7
             if a[2,0]!=a[1,0] and a[2,0]!=a[0,0]:

              for num8 in range(1,4):
               a[2,1]=num8
               if a[2,1]!=a[2,0] and a[2,1]!=a[1,1] and a[2,1]!=a[0,1]:

                print('noveno piso')
                for num9 in range(1,4):
                 a[2,2]=num9
                 if a[2,2]!=a[2,1] and a[2,2]!=a[2,0] and a[2,2]!=a[1,2] and a[2,2]!=a[0,2]:                  
                  print()
                  print(a)