Resumo
Os romanos antigos criaram um sistema numérico usando letras latinas, o que lhes serviu bem e ainda é usado pela civilização moderna, embora em um grau muito menor. Na época de seu uso, os romanos precisavam aprender a usar e manipular esses números para serem de grande utilidade para muitas aplicações. Por exemplo, se um homem possuísse 35 bois e ele adquirisse mais 27, como ele saberia o novo total a não ser contar todos? ( Ok, isso e usando um ábaco ... ) Se os romanos pudessem fazê-lo, certamente podemos descobrir também.
Objetivo
Escreva o menor algoritmo / função / programa que adicionará dois algarismos romanos e produza o resultado sem converter a representação em cadeia de uma das entradas em um número.
Regras / restrições
Devido às inconsistências históricas / pré-medievais na formatação, vou descrever algumas regras não-padrão (por uso moderno) para ortografia. Veja o guia de valores abaixo como exemplo.
- As letras I, X, C e M podem ser repetidas até quatro vezes seguidas, mas não mais. D, L e V nunca podem ser repetidos.
- A letra imediatamente à direita de outra letra na representação romana terá o mesmo ou menor valor que a esquerda.
- Em outras palavras,
VIIII == 9
masIX != 9
e é inválido / não permitido.
- Em outras palavras,
- Todos os valores de entrada serão 2.000 (MM) ou menos; nenhuma representação para números maiores que M é necessária.
- Todos os valores de entrada serão um número romano válido, de acordo com as regras acima.
- Você não pode converter nenhum número em decimal, binário ou qualquer outro sistema de números como parte de sua solução (você pode usar esse método para VERIFICAR seus resultados).
- Isso é código de golfe, então o código mais curto vence.
Guia de Valor
Symbol Value
I 1
II 2
III 3
IIII 4
V 5
VIIII 9
X 10
XIIII 14
XXXXIIII 44
L 50
LXXXXVIIII 99
C 100
D 500
M 1,000
Exemplos
XII + VIII = XX (12 + 8 = 20)
MCCXXII + MCCXXII = MMCCCCXXXXIIII (1,222 + 1,222 = 2,444)
XXIIII + XXXXII = LXVI (24 + 42 = 66)
Se precisar de mais esclarecimentos, pergunte.