Documentos de Académico
Documentos de Profesional
Documentos de Cultura
El Sudoku es un juego matemático que se inventó en Japón a finales de 1970 y que se hizo
mundialmente popular hace unos 15 años, cuando numerosos periódicos comenzaron a
incluirlo en la sección de pasatiempos. El objetivo del Sudoku es rellenar una matriz de 9 x 9
celdas (81 casillas) dividida en sub-matrices de 3 x 3 llamadas “cajas” o “regiones” con cifras
del 1 al 9 partiendo de algunos números dispuestos en algunas celdas, llamados pistas.
Para rellenar exitosamente la matriz, se deben cumplir ciertas condiciones las cuáles son:
• Un número no se puede repetir en una misma fila de la matriz.
• Un número no se puede repetir en la misma columna de la matriz.
• Un número no se puede repetir dentro de una “caja” o “región”.
Como se puede observar, el intento no válido, tiene dos veces el valor 8 en una misma región,
el que a su vez, se repite en la sexta columna de la matriz, por lo que no sería una solución
válida. Mientras que el intento válido, tiene todos los números solo una vez en cada fila,
columna y región.
intento.txt Respuesta
1 2 3 4 5 6 7 8 9 El sudoku ingresado es
2 3 4 5 6 7 8 9 1 incorrecto.
3 4 5 6 7 8 9 1 2
4 5 6 7 8 9 1 2 3
5 6 7 8 9 1 2 3 4
6 7 8 9 1 2 3 4 5
7 8 9 1 2 3 4 5 6
8 9 1 2 3 4 5 6 7
9 1 2 3 4 5 6 7 8
def convertirAMatriz(lista):
# Se declara una lista vacia para almacenar el contenido
matriz = []
# Se declara un iterador para recorrer las líneas del archivo
i = 0
# Mientras no haya recorrido todos los elementos de la lista (lineas del
archivo)
while i < len(lista):
# Se declara un iterador para recorrer cada elemento de la línea
j = 0
# Se dividen los elementos de la línea por el caracter espacio
# Y se almacenan en una lista llamada fila
fila = lista[i].split(' ')
# Mientras no se haya alcanzado el largo de la fila
while j < len(fila):
# Se convierte cada elemento de la fila en un entero
# y se actualiza en la fila
fila[j] = int(fila[j])
# Incremento el valor de j
j = j + 1
# Agrego la fila a la matriz
matriz.append(fila)
# Incremento el iterador de las filas para recorrer el siguiente
# elemento de la lista
i = i + 1
# Retorno la matriz
return matriz
# Función que una valida que una lista cumpla con la regla
# de tener los nueve dígitos una sola vez
# Entrada: lista de enteros
# Salida: Booleano
def validar(lista):
# Ordeno la lista que se recibió de entrada
lista.sort()
# Declaro una lista que tiene los elementos de 1 a 9
listaValida = [1,2,3,4,5,6,7,8,9]
# Comparo la lista recibida con la lista que sería
# considerada válida
if lista == listaValida :
# En caso de que ambas listas sean iguales
# Se retorna True
return True
# En caso contrario, se retorna False
return False
i = i + 1
# En caso contrario
else :
# Retorno False, pues ya encontré un error en la solución
return False
# Si reviso todas las filas sin retornar un False
# entrego un True, pues todas cumplen con la condición
return True
# BLOQUE PRINCIPAL
# ENTRADA
# Se obtiene el contenido del archivo de texto
entrada = leerArchivo('intento2.txt')
# PROCESAMIENTO
# Se convierte el contenido a matriz
sudoku = convertirAMatriz(entrada)
# SALIDA
# Se revisa si se cumplen las condiciones y se informa al usuario
# del error encontrado
if not validarRegiones(sudoku):
print 'El intento ingresado es incorrecto'
print 'Debido a un problema con las regiones'
else :
print 'El intento ingresado es correcto'
6
25 de agosto de 2018
Para representar el polinomio, se utilizará una lista, en la que la posición de cada elemento
representa el grado y el elemento almacenado en cada posición representa el valor del
coeficiente. Por ejemplo para el polinomio:
La lista [2, -2, 0, 12, 0, -3] lo representaría adecuadamente, pues cada posición indica
el valor al que se debe elevar x y el valor de la lista presenta el coeficiente por el que se debe
multiplicar.
# ENTRADAS
# Se solicita el inicio y final del rango
inicio = input('Ingrese el inicio del rango a evaluar: ')
fin = input('Ingrese el fin del rango a evaluar: ')
# Se solicita el polinomio
polinomio = input('Ingrese la lista que representa al polinomio: ')
# PROCESAMIENTO
# Creo el vector que representa los puntos de X
vectorX = numpy.linspace(inicio, fin, CANTIDAD_DE_PUNTOS)
# Creo un vector del mismo tamaño para almacenar los puntos
# del eje Y
resultado = numpy.zeros(CANTIDAD_DE_PUNTOS)
# Declaro un iterador, para ir recorriendo los términos del polinomio
i = 0
# Mientras i no alcance el largo del polinomio
while i < len(polinomio) :
# Realizo el cálculo del valor del vector X por el término del polinomo
# Y lo acumulo al valor que llevo en resultado
7
25 de agosto de 2018
# SALIDA
# Se genera el polinomio a evaluar
recta = grafico.plot(vectorX, resultado, label='polinomio')
# Se define el título
grafico.title('Grafico del polinomio ingresado')
# Se muestra la leyenda
grafico.legend()
# Se muestra el gráfico
grafico.show()