Es el año MDLXVII en un mundo en el que el Imperio Romano nunca cayó, y el colapso en la edad oscura nunca ocurrió. Debido al extenso período de Pax Romana, la estabilidad económica del imperio permitió que la tecnología progresara a un ritmo rápido.
Los romanos han comenzado a incursionar en los circuitos y han inventado una calculadora ingeniosa que no requiere el uso de un botón "igual". Lo llaman "notación romana polaca"
Para hacer un cálculo, primero ingresan sus operandos, luego la operación.
Por ejemplo, 100 + 11 * 20 sería C XI XX * +
.
Adicionalmente
Los romanos han descubierto que a menudo necesitan hacer múltiples cálculos al mismo tiempo, y preferirían que el método devuelva cada valor "en la pila" en algún tipo de estructura tipo matriz / lista / tupla. (por ejemplo X I + X I - CC II +
, devolvería [11, 9, 202])
El desafío es desarrollar un programa de calculadora capaz de realizar estos cálculos.
Aclaración : se requiere notación sustractiva. No me había dado cuenta de que no era una característica reconocida en el antiguo imperio romano. La tarea, por lo tanto, era ambigua, y me disculpo.
Pautas mínimas
- Su salida estará en números arábigos.
- Solo necesita convertir de números romanos hasta 5000.
- Deberá admitir operaciones +, -, /, * (suma, resta, división y multiplicación).
- Si la división está basada en coma flotante o en número entero es específica de la implementación. Cualquiera de los dos funciona para este desafío.
- Su producción deberá admitir números de hasta 4 mil millones.
- La respuesta más corta en general, Y gana en cada idioma. Este es un Code Golf Challenge pero me encanta la variedad.
En caso de empate, se considerarán factores como el soporte para números romanos superiores a 5000 u operaciones adicionales, la primera entrega ganará.