Ejercicio: 3Eva_IIT2007_T2 Verificar matriz Sudoku
Propuesta de solución en Python:
En el enunciado puede obtener una matriz para usar en el programa ejemplo.
Simplifique el problema, por ejemplo inicie con el algoritmo para verificar los números sea únicos en un vector, el resultado lo convierte una función únicos(vector). La función únicos() la usa para cada fila, luego para cada columna y finalmente para cada recuadro de 3×3.
Al finalizar, convierta la parte del programa ejemplo en una función verificasudoku(matriz).
# ICM00794-Fundamentos de Computación - FCNM-ESPOL # 3Eva_IIT2007_T2 Verificar matriz Sudoku # Propuesta: edelros@espol.edu.ec # Tarea por completar: tercera regla recuadros import numpy as np # verificar unicos en vector, intervalo [1,9] def unicos(vector): m = len(vector) contadores = np.zeros(9+1, dtype = int) i = 0 while not(i>=m): numero = vector[i] contadores[numero] = contadores[numero] +1 i = i+1 # revisa que el contador sea siempre 1 cumple = 1 numero = 1 while not(numero>9 or cumple==0): if (contadores[numero] != 1): cumple = 0 numero = numero+1 return(cumple) # PROGRAMA ------------------------- # INGRESO matriz=np.array([[1, 3, 5, 4, 6, 2, 9, 8, 7], [7, 6, 2, 1, 9, 8, 5, 4, 3], [8, 9, 4, 5, 3, 7, 6, 2, 1], [9, 7, 8, 6, 1, 3, 2, 5, 4], [4, 1, 6, 9, 2, 5, 3, 7, 8], [2, 5, 3, 7, 8, 4, 1, 6, 9], [5, 2, 7, 3, 4, 1, 8, 9, 6], [3, 8, 9, 2, 7, 6, 4, 1, 5], [6, 4, 1, 8, 5, 9, 7, 3, 2]]) # PROCEDIMIENTO essudoku = 1 # verifica por filas fila = 0 while not(fila>=9 or essudoku==0): # Selecciona vector vector = matriz[fila,:] verifica = unicos(vector) if (verifica==0): essudoku = 0 fila = fila+1 # Verifica por columnas columna = 0 while not(columna>=9 or essudoku==0): # Selecciona vector vector = matriz[:,columna] verifica = unicos(vector) if (verifica==0): essudoku = 0 columna = columna+1 # Verifica en cada submatriz de 3x3 fila = 0 columna = 0 submatriz = matriz[fila:fila+3,columna:columna+3] # convertir submatriz a vector # aplicar funcion unicos, para verificar essudoku # SALIDA print('¿es la matriz sudoku? [0,1]: ') print(essudoku)