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