sudoku resuelto con fortran

27
SUDOKU MIGUEL DE LAS HERAS JORGE SAINZ DE LA MAZA GINESA TORRES LÓPEZ

Upload: trash-peabody

Post on 23-Dec-2015

322 views

Category:

Documents


15 download

DESCRIPTION

programa creado en fortran empleado en resolver sudokus

TRANSCRIPT

SUDOKU

MIGUEL DE LAS HERAS

JORGE SAINZ DE LA MAZA

GINESA TORRES LÓPEZ

ÍNDICE

BREVE HISTORIA DEL SUDOKU ALGORITMOS DESESTIMADOS

ALGORITMOS EMPLEADOS ESTRUCTURA DEL PROGRAMA

CÓDIGO FUENTE EJECUCIÓN

El sudoku es un juego de lógica cuyo objetivo es completar una cuadrícula con los naturales del uno al nueve, de manera que no se repitan por filas, columnas ni submatrices

Tiene precedentes históricos como los cuadrados mágicos, y los cuadrados latinos de Euler

HISTORIA Y ORÍGENES DEL SUDOKU

Ejemplo de cuadrados latinos: ningún elemento se repite en la

misma fila o columna

ALGUNOS VARIANTES DEL SUDOKU

Sudoku Killer - Samurai

Sudoku Nonomino

ALGORITMOS DESESTIMADOS

CREACIÓN DE VECTORES DE TANTAS COMPONENTES COMO CANDIDATOS PARA CADA HUECO DEL SUDOKU.

SI EL PROGRAMA NO CONSIGUE SALIR DEL BUCLE: RESOLUCIÓN ALEATORIA CON VALORES ENTRE 1-9 USANDO LA FUNCIÓN

DE COMPROBACIÓN.

RESOLUCIÓN ALEATORIA CON VALORES POSIBLES, CAMBIANDO LOS MISMOS EN CASO DE INCONGRUENCIA

ALGORITMOS EMPLEADOS

BÚSQUEDA DE ELEMENTOS COINCIDENTES EN: FILAS

COLUMNAS

SUBMATRICES

COMPROBACIÓN DE POSIBLES CANDIDATOS SI EXISTE UNO SOLO

ESCRIBIMOS DICHO VALOR

EN CASO CONTRARIO

PASAMOS A LA SIGUIENTE CELDILLA

1 7 9 6

3 5 4 2

6 9 2 8

6 3

2 5 9

8 7

5 1 6 9

1 8 5 3

3 8 4

1 7 9 6

3 5 4 2

6 9 2 8

6 3

2 5 9

8 7

5 1 6 9

1 8 5 3

3 8 4

CELDAA

COMPROBAR

2 1 7 9 6

3 5 4 2

6 9 2 8

6 3

2 5 9

8 7

5 1 6 9

1 8 5 3

3 8 4

CELDAA

COMPROBAR

FILAS

2 1 7 9 6

3 5 4 2

6 9 2 8

6 3

2 5 9

8 7

5 1 6 9

1 8 5 3

3 8 4

CELDAA

COMPROBAR

COLUMNA

2 1 7 9 6

3 5 4 2

6 9 2 8

6 3

2 5 9

8 7

5 1 6 9

1 8 5 3

3 8 4

CELDAA

COMPROBAR

SUBMATRIZ

2 1 7 9 6

3 5 4 2

6 9 2 8

6 3

2 5 9

8 7

5 1 6 9

1 8 5 3

3 8 4

CELDAA

COMPROBAR

NO HAY COINCIDENCIAS

4 1 7 9 6

3 5 4 2

6 9 2 8

6 3

2 5 9

8 7

5 1 6 9

1 8 5 3

3 8 4

CELDAA

COMPROBAR

TAMPOCO COINCIDE-PASAMOS DE CELDILLA

1 7 9 6

3 5 4 2

6 9 2 8

6 3

2 5 9

8 7

5 1 4 6 9

1 8 5 3

3 8 4

CELDAA

COMPROBAR

1 7 9 6

3 5 4 2

6 9 2 8

6 3

2 5 9

8 7

5 1 4 6 9

1 8 5 3

3 8 4

CELDAA

COMPROBAR

1 7 9 6

3 5 4 2

6 9 2 8

6 3

2 5 9

8 7

5 1 4 6 9

1 8 5 3

3 8 4

CELDAA

COMPROBAR

ÚNICO VALORPOSIBLE

1 7 9 6

3 5 4 2

6 9 2 8

6 3

2 5 9

8 7

5 1 4 6 9

1 8 5 3

3 8 4

ESCRIBIMOSEL

NÚMERO

ESTRUCTURA DEL PROGRAMA

MÓDULO:

SUBRUTINA DE LECTURA DE SUDOKU

SUBRUTINA DE RESOLUCIÓN DEL SUDOKU

FUNCIÓN COMPLEMENTARIA

PROGRAMA PRINCIPAL:

ESCRITURA DEL SUDOKU INICIAL POR PANTALLA

ESCRITURA DEL SUDOKU RESUELTO POR PANTALLA Y FICHERO

ESCRITURA DEL TIEMPO DE RESOLUCIÓN POR PANTALLA

MÓDULO (I)

SUBRUTINA DE LECTURA: ABRE UN ARCHIVO DE TEXTO CON EL SUDOKU INICIAL ESCRITO

LEE LOS VALORES DEL SUDOKU

CARGA DICHOS VALORES EN UNA MATRIZ DE 9X9

MÓDULO (II) SUBRUTINA DE RESOLUCIÓN:

ES LA QUE CONTIENE LOS ALGORITMOS DE RESOLUCIÓN DEL SUDOKU.

COMPRUEBA LOS VALORES DEL 1 AL 9 EN:

FILAS

COLUMNAS

SUBMATRICES DE 3X3

CREA UN VECTOR BINARIO DE 9 COMPONENTES ASIGNANDO:

UN 1 SI EL NÚMERO ESTÁ YA ESCRITO EN LOS LUGARES COMPROBADOS

UN 2 SI EL NÚMERO NO ESTÁ ESCRITO TODAVÍA

ESTA SUBRUTINA SE DESARROLLA EN BUCLE, CAMBIANDO ÚNICAMENTE LOS VALORES CON 0, Y PARANDO SU FUNCIONAMIENTO EN EL MOMENTO EN EL QUE

NO QUEDAN MÁS ELEMENTOS NULOS.

Ejemplo de

funcionamiento del

vector binario

MÓDULO (III) FUNCIÓN COMPLEMENTARIA:

ESTA FUNCIÓN COMPLEMENTA AL VECTOR BINARIO DE LA SUBRUTINA ANTERIOR.

SI EL VECTOR TIENE UN ÚNICO 2:

EL VALOR QUE APORTE EL 2 DEBE COMPLETAR DICHA CELDA DEL SUDOKU.

LA FUNCIÓN COMPONENTE ENCUENTRA DICHO VALOR.

ASÍ EL VALOR DADO POR ESTA FUNCIÓN SE ESCRIBE EN EL LUGAR CORRESPONDIENTE

PROGRAMA PRINCIPAL (I) LLAMA A LA SUBRUTINA DE LECTURA

IMPRIME EN PANTALLA EL SUDOKU INICIAL

PROGRAMA PRINCIPAL (II) LLAMA A LA SUBRUTINA DE RESOLUCIÓN

RESUELVE EL SUDOKU

PRESENTA EL SUDOKU RESUELTO POR LA PANTALLA

PROGRAMA PRINCIPAL (III)

SE EXPORTA EL SUDOKU A UN DOCUMENTO DE TEXTO

SE PRESENTA POR PANTALLA EL TIEMPO DE EJECUCIÓN DE PROGRAMA

EJECUCIÓN

8 1 2 4 3 7 9 5 6

3 7 5 6 9 8 4 1 2

6 9 4 5 1 2 3 7 8

9 5 6 7 4 3 2 8 1

7 8 1 2 5 9 6 3 4

4 2 3 8 6 1 7 9 5

5 3 7 1 2 4 8 6 9

1 4 8 9 7 6 5 2 3

2 6 9 3 8 5 1 4 7