Esta implementación aplica lo propuesto anteriormente, aterrizado a la realidad de un lenguaje de programación. Utilizo Visual C++ 6.0.
Ese nuevo enfoque resultó en un programa mas simple, que consume menos recursos de memoria y es más rápido (lo ideal). Los resultados hasta ahora son muy prometedores porque las aproximaciones (adaptaciones) son mucho mejores que la generación de algoritmos del capitulo 2.
Falta hacer pruebas y comprobar.
El programa se encuentra en fase simplista (los parámetros de ejecución están dentro del código) y lo único que hace es imprimir el resultado al final de la simulación. En una versión posterior podrá enviársele parámetros vía un archivo plano o quizás tenga GUI.
Esta simulación si deja planteadas algunas preguntas:
1. Ciertos algoritmos generados al azar implementan ciclos cerrados (queda atrapada la ejecución allí). Como el interpretador ejecuta una cantidad de veces definida las instrucciones finalmente el programa termina. ¿Estos algoritmos con esta característica deben rechazarse?
2. Algunos algoritmos llegan a los límites que imponen los enteros, por ejemplo multiplica un número grande con otro grande y vuelve y repite hasta que ya sobrepasa el límite permitido. El interpretador lo que hace es evitar que las operaciones se pasen de esta frontera, pero ¿Estos algoritmos con esta característica deben rechazarse?
Ambas preguntas son muy tentadoras a responder afirmativamente, pero la experiencia me dice que uno debe probar varias veces antes de concluir.