Такий сценарій траплявся зі мною кілька разів.
Я запрограмував алгоритм, який вирішує певну проблему. Це прекрасно працює і знаходить правильні рішення. Тепер я хочу мати можливість сказати алгоритму "написати повне пояснення того, як ти потрапив до рішення". Моя мета - мати можливість використовувати алгоритм в онлайн-демонстраціях, підручниках тощо. Я все ще хочу мати можливість запускати алгоритм в режимі реального часу, без пояснень. Яку хорошу модель дизайну використовувати?
ПРИКЛАД: Припустимо, я реалізую цей метод для пошуку найбільшого спільного дільника . Поточний реалізований метод повертає правильну відповідь, але без пояснень. Я хочу мати метод для пояснення своїх дій, наприклад:
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.
Вихід повинен бути повернутий таким чином, щоб його можна було легко відображати як в консолі, так і в веб-додатках.
Яка хороша схема надання пояснень при необхідності, не заважаючи виконувати алгоритм в реальному часі, коли пояснення не потрібні?