Closures y generador de secuencia con memoria

JavaScript Hard closures

Tarea «Closures y generador de secuencia con memoria»

Implementa la función createSequenceGenerator, que toma un valor inicial y un paso. La función devuelve un objeto con dos métodos: next() y reset(). El método next() devuelve el siguiente valor de la secuencia (comenzando desde el inicial, incrementando en el paso en cada llamada). El método reset() restablece la secuencia al valor inicial. Adicionalmente, el método next() debe recordar todos los valores generados en un arreglo, accesible a través de la propiedad history del objeto. La propiedad history debe estar protegida contra modificaciones directas desde el exterior, pero debe ser legible. Utiliza closures para encapsular el estado.

Formato de entrada

Primera línea: valor inicial (número entero). Segunda línea: paso (número entero). Luego una línea con comandos: 'next' (llamar a next()) o 'reset' (llamar a reset()). Los comandos se repiten hasta el final de la entrada.

Formato de salida

Para cada comando 'next', imprime el valor actual de la secuencia. Para 'reset', no imprimas nada.

Ejemplos

Ejemplo 1

ENTRADA
10 -3 next next next reset next
SALIDA
10 7 4 10

Ejemplo 2

ENTRADA
2 7 13
SALIDA
91
main.js