Imagen

SUDOKU

Responder
nicalejo
Mensajes: 79
Registrado: 19 Sep 2016 09:17

SUDOKU

Mensaje por nicalejo »

Buenas, como estoy como Gil con la burra con el EP128 me propuse desarrollar un programa para resolver sudokus, de cualquier dificultad. Lo de los sudokus siempre me ha molado y decidí tirar por ahí.

Empecé a programarlo con el IS-BASIC y lo cierto es que me impresionó como BASIC, estructurado y potente, pero es lento como el caballo del malo. Cuando el código ya fue cogiendo tamaño empecé a echar de menos un editor: lo de editar a pelo las lineas y no poder cortar y pegar bloques completos de código (entiendo que esto no se puede hacer en IS-BASIC) terminó pudiendo conmigo.

Decidí empezar de cero en otro lenguaje y miré el Hisoft Pascal, pero nuevamente lo de editar era una pesadilla. Entonces descubrí Turbo Pascal 3 bajo ISDOS CP/M 80 y ahí que me fui, un editor útil pero evidentemente limitado acorde a los tiempos en los que se desarrolló. La experiencia ha sido fantástica, una herramienta muy poderosa para la época.

Llegados a este punto ya no se puede decir que sea un desarrollo sobre EP, si no sobre CP/M 80 pero nuestro adorado Enterprise lo corre, con lo que me vale.

Tras todo el proceso no tengo claro cuales son las limitaciones de memoria del ISDOS y si se puede usar toda la memoria disponible en el EP para desarrollos. Tiendo a pensar que no, que CP/M 80 no puede por diseño usar esos teóricos 4 Mb máximos de EP.

Voy a adjuntar el código en un empaquetado por si alguien le quiere echar un ojo y también el ejecutable CP/M 80 por si alguien lo quiere probar en otra máquina sin compilar.

Esta es la relación de ficheros del empaquetado:

SUDOKU.CPM -> Evidentemente el ejecutable compilado. Debe ser renombrado a SUDOKU.COM. Parece que el servidor me impedía subir un ZIP con un .COM dentro.

SUDOKU.PAS -> el fuente principal que incluye los otros
UTILS.PAS -> rutinas auxiliares que utilizan otros fuentes del programa
CHECK.PAS -> rutinas que se encargan de identificar las situaciones que permiten eliminar candidatos en las celdas sin resolver
REMOVE.PAS -> rutinas que se emplean en ir eliminando el número de candidatos por celda sin resolver

BOARD.TXT -> fichero desde el que el programa lee el sudoku a resolver. Se emplean 0's para las celdas vacías a resolver

Espero que os guste para quien tenga curiosidad. Si alguien encuentra un error o un sudoku que no se llega a resolver, estaré encantado de revisar el código.
SUDOKU.zip
(16.89 KiB) Descargado 20 veces
Avatar de Usuario
carmeloco
Mensajes: 2112
Registrado: 16 Dic 2015 08:56

Re: SUDOKU

Mensaje por carmeloco »

Siendo para CP/M, ¿podría llegar a correr en otro sistema con CP/M? Es más, tengo entendido que MSX-DOS2 es compatible con CP/M. He intentado ejecutar el compilado en un emulador de MSX con 2MB de mapped ram, pero me da error de que no hay suficiente memoria.
nicalejo
Mensajes: 79
Registrado: 19 Sep 2016 09:17

Re: SUDOKU

Mensaje por nicalejo »

No tengo mucha experiencia sobre CP/M pero creo que sí, que cualquier COM generado para CP/M 80 debería funcionar en CP/M 80 en otro HW que lo soporte.

Que se pronuncie alguien con experiencia al respecto. Es evidente que no puede ser un problema de memoria insuficiente.
nicalejo
Mensajes: 79
Registrado: 19 Sep 2016 09:17

Re: SUDOKU

Mensaje por nicalejo »

Buenas, alguien sabe cómo se redirecciona la salida estándar en CP/M? Para volcar lo que se muestra en pantalla a un fichero, como se suele hacer en otros sistemas tipo ... DIR > list.txt

Puede que tenga que ver con el comando MODE y los dispositicos AUX: LST: PUN: etc, pero no lo he conseguido
nicalejo
Mensajes: 79
Registrado: 19 Sep 2016 09:17

Re: SUDOKU

Mensaje por nicalejo »

carmeloco escribió:Siendo para CP/M, ¿podría llegar a correr en otro sistema con CP/M? Es más, tengo entendido que MSX-DOS2 es compatible con CP/M. He intentado ejecutar el compilado en un emulador de MSX con 2MB de mapped ram, pero me da error de que no hay suficiente memoria.
En esta página hablan mucho de pascal en MSX y hay descargas de compiladores

http://pascal.hansotten.com/delphi/turbo-pascal-on-cpm-msx-dos-and-ms-dos/
nicalejo
Mensajes: 79
Registrado: 19 Sep 2016 09:17

Re: SUDOKU

Mensaje por nicalejo »

Añado la versión BASIC del programa. Eso sí, la ejecución es lentísima, puede tardar casi una hora en resolver un sudoku complejo lo que la versión compilada se ventila en minutos.
SUDOKU_BAS.zip
(12.5 KiB) Descargado 39 veces
Responder

Volver a “Software Enterprise”