Entrega el 20 de Marzo
Las notas de los laboratorio se darán en la manera siguiente:
30%: Funcionalidad - el programa hace lo que queríamos que hiciera, y han hecho lo que pido en el trabajo
15%: Diagrama de flujo y pseudo-codigo.
10%: Eficiencia - el código que utilice menos lineas de programación.
10%: Fiabilidad - el código está escrito en manera fiable y ordenada
10%: Modularidad - el código está escrito en manera modular
10%: Legibilidad - el código está escrito legiblemente y limpiamente.
15%: Presentación oral en la clase (todo el grupo debe estar presente y participar!)
-------
100%
+15% - Bono de creatividad - Hagan cosas originales más alla de lo requerido y reciban hasta 15% bono!
-------
115%
Obviamente, a pesar de que funcionalidad es 30% de la nota, si el laboratorio no tiene un mínimo de funcionalidad, la nota del laborotorio será 0.
Laboratorio(Individual):
En base a la practica 1, 2, 3, 4, 5 y 6.
Advertencia para los flojos y asustadizos: Este laboratorio solo requiere del uso de la lógica, no requiere Álgebra lineal o conocimientos específicos de algún tema..., de todos modos si lo llega a requerir, usted deberá estudiar el procedimiento y entenderlo en donde lo máximo que necesitara sera saber sumar, resta, dividir y multiplicar(cosas que usted aprendió hacer en 3 primaria).
Desarrollo:
Los juegos son la gran fascinación de grandes y chicos hoy en día..., a todas las personas les gusta, pero muy pocos se han preguntado alguna vez ¿como? se realiza o se programa un juego. En este laboratorio usted empleara e implementar la lógica para crear un solver de sudoku.
El sudoku un juego japones de lógica matemática muy popular hoy en día en las secciones de las revistas y periódicos a nivel mundial, el objetivo del juego es el siguiente:
Rellenar una cuadrícula de 9×9 celdas dividida en subcuadrículas de 3×3 con las cifras del 1 al 9 partiendo de algunos números ya dispuestos en algunas de las celdas.
No se debe repetir ningún número en una misma fila, columna o subcuadrícula.
Ejemplo de Sudoku:
Como se dará cuenta el sudoku es sencillamente una cuadricula de 9x9, osea una matriz de 9x9 y tiene subcuadriculas de 3x3 o secciones de la matriz de 9x9.
Lo primero que debe hacer usted es tratar de resolver el juego por usted mismo, utilizando su propia lógica.
Una vez entienda el juego usted deberá transferir esta lógica a código en C para resolver CUALQUIER juego de Sudoku.
Para empezar utilice este archivo en C, como guía.
El programa que usted diseñara tendrá que cumplir con las siguientes condiciones:
La matriz de 9x9 inicial usted la deberá generar utilizando la siguiente pagina web.
Una vez la matriz este inicializada, usted deberá escribir un algoritmo(un procedimiento) que haga un barrido de la matriz 9x9, y detecte en sus secciones de 3x3, ¿Cuales de los números del 1 al 9 hacen falta?, estos números deben guardarse en otra matriz alterna para no perder los números faltantes.
Después de que el programa detecta cuales números faltan en cada seccion usted debera barrer la matriz de 9x9 linea a linea para detectar cuales numeros del 1 al 9 faltan, y deberá guardar esto en otras matrices alternas.
Lo mismo debe hacer para las columnas.
Una vez tenga los valores que faltan en casa subsección de 3x3, en cada linea de 9 posiciones y en cada columna, usted deberá rellenar la matriz original con los valores teniendo en cuenta las reglas originales del juego.
una vez rellene los valores, se debe imprimir en pantalla la matriz resuelta, utilizando una apariencia de juego, esto quiere decir que debe ser clara y ordenada.
Al tener escrito el programa en C usted deberá pasarlo a python.
Enhorabuena!!, cuando resuelva este laboratorio se dara cuenta que ha creado un sistema de inteligencia artificial pequeño, capaz de resolver un problema de lógica matemática.
El bonus es el siguiente:
Quien haga un procedimiento que inicie la matriz de 9x9 según las normas del sudoku, utilizando la función "rand" de la librería <stdlib.h>, en vez de que la matriz sea inicializada de forma manual teniendo en cuenta la pagina web, tendrá una bonificación de 50%.