Este es el programa que habiamos hecho, en donde daban soluciones aleatorias
import numpy as np from random import * def random3(): aux1 = 3*random() if aux1 > 0 and aux1<=1: aux2=1 if aux1 > 1 and aux1<=2: aux2=2 if aux1 > 2 and aux1<=3: aux2=3 return aux2 def busca2(A): solucion = 1 # Es una bandera, solucion 1 se asume temporalmente que es solucion, 0 Se demuestra que NO es solucion if solucion ==1: # Checando el primer renglon... if A[0,0] == A[0,1] or A[0,0] == A[0,2] or A[0,1]==A[0,2]: solucion = 0 if solucion ==1: # Checando el segundo renglon... if A[1,0] == A[1,1] or A[1,0] == A[1,2] or A[1,1]==A[1,2]: solucion = 0 if solucion ==1: # Checando el segundo renglon... if A[2,0] == A[2,1] or A[2,0] == A[2,2] or A[2,1]==A[2,2]: solucion = 0 if solucion ==1: # Checando la primer columna... if A[0,0] == A[1,0] or A[0,0] == A[2,0] or A[1,0]==A[2,0]: solucion = 0 if solucion ==1: # Checando la segunda columna... if A[0,1] == A[1,1] or A[0,1] == A[2,1] or A[1,1]==A[2,1]: solucion = 0 if solucion ==1: # Checando la tercer columna... if A[0,2] == A[1,2] or A[0,2] == A[2,2] or A[1,2]==A[2,2]: solucion = 0 return solucion ############################################# cuenta=0 N=500 A=np.zeros((3,3)) for k in range(N): for i in range(3): for j in range(3): A[i,j]=random3() if busca2(A)==1: print() print(A) cuenta=cuenta+1 print(cuenta)
En el siguiente programa, aprendemos a convertir las soluciones en novenas y echarlas a una bolsa
cuenta=0 N=500 A=np.zeros((3,3)) novena = [] bolsa = [] unicas = [] for k in range(N): for i in range(3): for j in range(3): A[i,j]=random3() if busca2(A)==1: print() print(A) novena = [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]] print(novena) bolsa.append(novena) print(bolsa) cuenta=cuenta+1 print(cuenta)
Finalmente, el siguiente programa nos permite encontrar las soluciones distintas
cuenta=0 N=1000 A=np.zeros((3,3)) novena = [] bolsa = [] unicas = [] for k in range(N): for i in range(3): for j in range(3): A[i,j]=random3() if busca2(A)==1: print() print(A) novena = (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]) print(novena) bolsa.append(novena) print(bolsa) cuenta=cuenta+1 unicas=set(bolsa) print(bolsa) print(unicas) print('Encontre =',cuenta,' pero nomas hay diferentes ',len(unicas))