É o ano MDLXVII em um mundo em que o Império Romano nunca caiu e o colapso na idade das trevas nunca ocorreu. Devido ao longo período de Pax Romana, a estabilidade econômica do império permitiu que a tecnologia progredisse rapidamente.
Os romanos começaram a se interessar por circuitos e inventaram uma calculadora engenhosa que não requer o uso de um botão "igual". Eles chamam de "notação romana polonesa"
Para fazer um cálculo, eles inserem seus operandos primeiro, depois a operação.
Por exemplo, 100 + 11 * 20 seria C XI XX * +
.
Além disso
Os romanos descobriram que frequentemente precisam fazer vários cálculos ao mesmo tempo e preferem que o método retorne todos os valores "na pilha" em algum tipo de estrutura semelhante a matriz / lista / tupla. (por exemplo X I + X I - CC II +
, retornaria [11, 9, 202])
O desafio é desenvolver um programa de calculadora capaz de fazer esses cálculos.
Esclarecimento : Notação subtrativa é necessária. Eu não tinha percebido que não era uma característica reconhecida no império romano antigo. A tarefa era, portanto, ambígua, e peço desculpas.
Diretrizes mínimas
- Sua saída será em algarismos arábicos.
- Você só precisa converter de algarismos romanos para 5000.
- Você precisará oferecer suporte às operações +, -, /, * (adição, subtração, divisão e multiplicação).
- Se a divisão é baseada em ponto flutuante ou em número inteiro é específica da implementação. Ou funciona para esse desafio.
- Sua saída precisará suportar números de até 4 bilhões.
- Resposta mais curta no geral, E em cada idioma vence. Este é um desafio do Code Golf, mas eu adoro a variedade.
Em caso de empate, fatores como suporte para algarismos romanos acima de 5000 ou operações adicionais serão considerados os primeiros a serem vencidos.