Lo scenario seguente mi è successo più volte.
Ho programmato un algoritmo che risolve un certo problema. Funziona bene e trova le soluzioni giuste. Ora, voglio avere un'opzione per dire all'algoritmo "scrivi una spiegazione completa di come sei arrivato alla soluzione". Il mio obiettivo è essere in grado di utilizzare l'algoritmo in dimostrazioni online, lezioni di esercitazione, ecc. Voglio ancora avere un'opzione per eseguire l'algoritmo in tempo reale, senza le spiegazioni. Qual è un buon modello di design da usare?
ESEMPIO: Supponiamo che io attui questo metodo per trovare il massimo comun divisore . L'attuale metodo implementato restituisce la risposta corretta, ma senza spiegazioni. Voglio avere un'opzione per il metodo per spiegare le sue azioni, come:
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.
L'output deve essere restituito in modo tale da poter essere facilmente visualizzato sia in console che in applicazioni basate sul Web.
Qual è un buon modello per fornire spiegazioni quando necessario, senza danneggiare le prestazioni in tempo reale dell'algoritmo quando non sono necessarie spiegazioni?