O cenário a seguir me aconteceu várias vezes.
Programei um algoritmo que resolve um determinado problema. Funciona bem e encontra as soluções corretas. Agora, quero ter uma opção para informar ao algoritmo "escreva uma explicação completa de como você chegou à solução". Meu objetivo é poder usar o algoritmo em demonstrações online, aulas tutoriais, etc. Ainda quero ter a opção de executar o algoritmo em tempo real, sem as explicações. O que é um bom padrão de design para usar?
EXEMPLO: Suponha que eu implemente esse método para encontrar o maior divisor comum . O método implementado atual retorna a resposta correta, mas sem explicações. Quero ter uma opção para o método explicar suas ações, 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.
A saída deve ser retornada para que possa ser facilmente exibida no console e em aplicativos baseados na Web.
Qual é um bom padrão para fornecer explicações quando necessário, sem prejudicar o desempenho em tempo real do algoritmo quando as explicações não são necessárias?