Calculadora de pilha

Uma máquina de pilha processa instruções ao empilhar e desempilhar valores em uma pilha interna.
Um exemplo simples disso é uma calculadora.

O argumento passado para run(instructions) sempre será uma string contendo uma série de instruções.
O conjunto de instruções da calculadora será este:

  • +: Retire os 2 últimos valores da pilha, some-os e empilhe o resultado na pilha.
  • -: Retire os 2 últimos valores da pilha, subtraia o valor de baixo do valor no topo e empilhe o resultado.
  • *: Retire os 2 últimos valores, multiplique-os e empilhe o resultado.
  • /: Retire os 2 últimos valores, divida o valor no topo pelo valor de baixo e empilhe o resultado.
  • DUP: Duplique (não multiplique por dois) o valor no topo da pilha.
  • POP: Retire o último valor da pilha e descarte-o.
  • PSH: É executado sempre que um número aparece como instrução. Empilhe o número.
  • Qualquer outra instrução (por exemplo, uma letra) deve resultar no valor "Invalid instruction: [instruction]"

Exemplos

"" ➞ 0

"5 6 +" ➞ 11

"3 DUP +" ➞ 6

"6 5 5 7 * - /" ➞ 5

"x y +" ➞ Invalid instruction: x

Observações

  • Se não houver instruções, o valor deve continuar sendo 0.
  • O valor retornado por getValue() deve ser o valor no topo da pilha.