Closures e gerador de sequência com memória
JavaScript
Hard
closures
Tarefa «Closures e gerador de sequência com memória»
Implemente a função createSequenceGenerator, que recebe um valor inicial e um passo. A função retorna um objeto com dois métodos: next() e reset(). O método next() retorna o próximo valor da sequência (começando pelo valor inicial, incrementando pelo passo a cada chamada). O método reset() reinicia a sequência para o valor inicial. Além disso, o método next() deve armazenar todos os valores gerados em um array, acessível através da propriedade history do objeto. A propriedade history deve ser protegida contra modificação direta externa, mas deve ser legível. Use closures para encapsular o estado.
Formato de Entrada
Primeira linha: valor inicial (número inteiro). Segunda linha: passo (número inteiro). Em seguida, uma linha com comandos: 'next' (chamar next()) ou 'reset' (chamar reset()). Os comandos se repetem até o final da entrada.
Formato de Saída
Para cada comando 'next', imprima o valor atual da sequência. Para 'reset', não imprima nada.
Exemplos
Exemplo 1
ENTRADA
10
-3
next
next
next
reset
next
SAÍDA
10
7
4
10
Exemplo 2
ENTRADA
2
7 13
SAÍDA
91
main.js