Intérprete

Hacer un programa que simule la ejecución de un programa escrito en un cierto lenguaje ensamblador (Apodado cariñosamente Rourix en honor a su inventor). En este lenguaje, se dispone exclusivamente de 100 variables de tipo entero, x0x99x_0 \dots x_{99}, todas inicialmente con el valor 1. Las instrucciones del programa se encuentran guardadas consecutivamente en posiciones etiquetadas 000,001,002,000, 001, 002, \dots (hasta un máximo de 999). El conjunto de instrucciones posibles es:

stop     detiene el programa.
endl     escribe un salto de línea.
prin ii     escribe, precedido de un espacio, el contenido de xix_i.
stor ii vv     guarda el valor vv en la variable xix_i (xi:=vx_i:=v).
copy ii jj     copia xjx_j en xix_i (xi:=xjx_i:=x_j).
acum ii jj     acumula xjx_j en xix_i (xi:=xi+xjx_i:=x_i+x_j).
subs ii jj     resta xjx_j de xix_i (xi:=xixjx_i:=x_i-x_j).
prod ii jj     multiplica xix_i por xjx_j (xi:=xi*xjx_i:=x_i * x_j).
goto \ell     salta a la instrucción de la posición \ell.
jzer ii \ell     salta a la instrucción de la posición \ell sólo si xi=0x_i = 0.
jneg ii \ell     salta a la instrucción de la posición \ell sólo si xi<0x_i < 0.

El programa siempre se empieza a ejecutar desde la posición 000. Después de ejecutar la instrucción de una posición pp, se pasa a ejecutar la siguiente instrucción (la de la posición p+1p + 1, la cual si se ha de ejecutar siempre existirá), excepto como es lógico con stop, goto, y jzer o jneg cuando las condiciones para saltar son ciertas.

Todas las ii y jj del programa estarán entre 0 y 99. Todas las \ell son líneas de programa válidas. Al ejecutar un programa, siempre se encontrará un stop en algún momento.

Entrada

La entrada consiste en un programa correcto en ensamblador, de entre 1 y 1000 líneas. Cada línea empieza con tres dígitos redundantes que indican su número empezando por 000, seguidos de un espacio, y de la instrucción correspondiente a esa línea. Los campos de cada instrucción también están separados por un espacio. Todas las direcciones de salto \ell tienen exactamente tres dígitos.

Salida

Hay que escribir lo mismo que escribiría el programa en ensamblador.

Pista

Es suficiente con tener una tabla para almacenar las 100 variables, otra tabla para almacenar el programa, y un índice que indica cual es la instrucción que se ha de ejecutar a continuación.

Información del problema

Autoría: Omer Giménez

Generación: 2026-01-25T10:18:15.639Z

© Jutge.org, 2006–2026.
https://jutge.org