Продолжаем комбинаторную практику. Дан ряд цифр и одно число, например: 1 2 3 4 5 6 7 8 и 100. Расставить между цифрами знаки "пробел", "умножить", "плюс" и "минус" таким образом, чтобы получилось заданное число.
Дата отправки отчёта:
23 февраля 2016 г.
Задание выполнено: за
2 час. 30 мин.
Чему научился:
Повторил работу с рекурсией, неплохо закрепил полученные навыки во время создания класса калькулятора.
Что было сложным:
Реализовать свой класс калькулятора.
Комментарии:
Калькулятор реализовал с использованием грамматики(на втором скриншоте слева): Expression отвечает за вычисление суммы/разности, Term - произведение, Number - составление числа из цифр, разделенных пробелами. Все операции левоассоциативны, приоритеты реализованы с помощью рекурсивных вызовов функций Term, Number.
Трудности: понять алгоритм задачи цифры и знаки с помощью блок-схемы оказалось проще понимать и составлять алгоритм задачи, чем с использованием словесного описания