Calculadora de pila

Una máquina de pila procesa instrucciones al apilar y desapilar valores en una pila interna.
Un ejemplo sencillo de esto es una calculadora.

El argumento pasado a run(instructions) siempre será una cadena que contiene una serie de instrucciones.
El conjunto de instrucciones de la calculadora será el siguiente:

  • +: Extrae los últimos 2 valores de la pila, súmalos y coloca el resultado en la pila.
  • -: Extrae los últimos 2 valores de la pila, resta el valor de abajo al que está en la cima y coloca el resultado.
  • *: Extrae los últimos 2 valores, multiplícalos y coloca el resultado.
  • /: Extrae los últimos 2 valores, divide el que está en la cima entre el de abajo y coloca el resultado.
  • DUP: Duplica (no multiplica por dos) el valor que está en la cima de la pila.
  • POP: Extrae el último valor de la pila y descártalo.
  • PSH: Se realiza cada vez que aparece un número como instrucción. Coloca el número en la pila.
  • Cualquier otra instrucción (por ejemplo, una letra) debe producir el valor "Invalid instruction: [instruction]"

Ejemplos

"" ➞ 0

"5 6 +" ➞ 11

"3 DUP +" ➞ 6

"6 5 5 7 * - /" ➞ 5

"x y +" ➞ Invalid instruction: x

Notas

  • Si no hay instrucciones, el valor debe permanecer en 0.
  • El valor de retorno de getValue() debe ser el valor que está en la cima de la pila.