Следующий сценарий случился со мной несколько раз.
Я запрограммировал алгоритм, который решает определенную проблему. Работает нормально и находит правильные решения. Теперь я хочу указать алгоритму «написать полное объяснение того, как вы пришли к решению». Моя цель - использовать алгоритм в онлайн-демонстрациях, на уроках и т. Д. Я все еще хочу иметь возможность запускать алгоритм в режиме реального времени без объяснений. Какую модель дизайна использовать?
ПРИМЕР: Предположим, я реализую этот метод для нахождения наибольшего общего делителя . Текущий реализованный метод возвращает правильный ответ, но без объяснений. Я хочу, чтобы метод объяснил свои действия, например:
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.
Вывод должен быть возвращен таким образом, чтобы его можно было легко отобразить как в консоли, так и в веб-приложениях.
Каков хороший шаблон для предоставления объяснений, когда это необходимо, при этом не снижая производительность алгоритма в реальном времени, когда объяснения не нужны?