viernes, 13 de enero de 2017

Generador elemental de sudokus con Excel

Nunca me había planteado este tema, como generar un sudoku, me había limitado a resolver alguno. 
Como en la anterior entrada, en el entorno de como utilizar o resolver algunos eventos de hoja en excel, describo como hacer, con programación, una ayuda para resolver sudokus.
Nunca me lo había planteado, ni siquiera pensado en el tema ¿Como puedo generar uno?


De momento un primer paso, un generador elemental, y muy sencillo, de sudukus.

Partimos de un sudoku ya resuelto, con todos sus números correctamente puestos. La pregunta que me hice es ¿Y si convierto esos números absolutos en indices de un rango?
  • Creo un rango de celdas en el que coloco los nueve números del sudoku. Aleatoriamente  (en el libro anexo, de momento a mano) los números se reparten en el rango B1:J1. 
  • Utilizo la variable con nombre Num=Generador!$B$1:$J$1
  • El sudoku ya resuelto lo pongo en la hoja Aux, rango B2:j10
  • Con =INDICE(Num;Aux!B2) utilizo el valor del sudoku ya resuelto como indice.
  • Esto nos da un sudoku resuelto, sin celdas en blanco. Solo nos queda copiar los valores en otro lugar y borrar aquellas celdas que deseemos que aparezcan en blanco.
Consideraciones de cara a realizar un generador un poco mas complejo. Las supongo ciertas, de momento sin comprobar.

  • El sudoku esta compuesto de tres ternas de tres filas, y de tres ternas de tres columnas. Las tres ternas, tanto de filas de de columnas (cada una por su lado) se pueden reordenar. La primera terna se puede poner como segunda o como tercera, la segunda como primera o como tercera, etc. Lo mismo para las ternas en columna. Al movérlas en bloque, si es fila, no modificamos los números incluidos en cada columna o, si es columna, las filas.
  • A su vez, dentro de una terna   fila podemos reordenar sus tres filas. De manera similar podemos actuar con las columnas.

No hay comentarios:

Publicar un comentario