El siguiente escenario me sucedió varias veces.
Programé un algoritmo que resuelve un cierto problema. Funciona bien y encuentra las soluciones correctas. Ahora, quiero tener una opción para decirle al algoritmo "escribe una explicación completa de cómo llegaste a la solución". Mi objetivo es poder usar el algoritmo en demostraciones en línea, clases de tutoría, etc. Todavía quiero tener una opción para ejecutar el algoritmo en tiempo real, sin las explicaciones. ¿Cuál es un buen patrón de diseño para usar?
EJEMPLO: Supongamos que implemento este método para encontrar el máximo divisor común . El método implementado actual devuelve la respuesta correcta, pero sin explicaciones. Quiero tener una opción para que el método explique sus acciones, como:
Initially, a=6 and b=4. The number of 2-factors, d, is initialized to 0.
a and b are both even, so we divide them by 2 and increment d by 1.
Now, a=3 and b=2.
a is odd but b is even, so we divide b by 2.
Now, a=3 and b=1.
a and b are both odd, so we replace a by (a-b)/2 = 1.
Now, a=1 and b=1.
a=b, so the GCD is a*2^d = 2.
La salida debe devolverse de modo que pueda mostrarse fácilmente tanto en la consola como en aplicaciones basadas en la web.
¿Cuál es un buen patrón para proporcionar explicaciones cuando sea necesario, sin dañar el rendimiento en tiempo real del algoritmo cuando no se necesitan explicaciones?