Замыкания и генератор последовательности с памятью

JavaScript Сложный closures

Задача «Замыкания и генератор последовательности с памятью»

Реализуйте функцию createSequenceGenerator, которая принимает начальное значение и шаг. Функция возвращает объект с двумя методами: next() и reset(). Метод next() возвращает следующее значение последовательности (начиная с начального, увеличивая на шаг каждый вызов). Метод reset() сбрасывает последовательность к начальному значению. Дополнительно, метод next() должен запоминать все сгенерированные значения в массиве, доступном через свойство history объекта. Свойство history должно быть защищено от прямого изменения извне, но должно быть читаемым. Используйте замыкания для инкапсуляции состояния.

Формат ввода

Первая строка: начальное значение (целое число). Вторая строка: шаг (целое число). Далее строка с командами: 'next' (вызов next()) или 'reset' (вызов reset()). Команды повторяются до конца ввода.

Формат вывода

Для каждой команды 'next' выведите текущее значение последовательности. Для 'reset' ничего не выводите.

Примеры

Пример 1

ВВОД
10 -3 next next next reset next
ВЫВОД
10 7 4 10

Пример 2

ВВОД
2 7 13
ВЫВОД
91
main.js