Crie a função mais curta para converter uma sequência de números romanos em um número inteiro.
As regras para cada letra podem ser encontradas na página da Wikipedia . Letras acima de 1.000 terão parênteses ao redor deles para sinalizar seu valor mais alto.
Requisitos:
- É necessário converter números romanos 1 em 500.000
- Deve ser concluído em menos de um minuto
- Não usa funções internas que possam fornecer uma vantagem (Ex: Uma função que converte números romanos em números inteiros)
- É uma função
A função não precisa suportar frações. Qualquer entrada inválida deve retornar o número 0.
A função mais curta vence. No caso de empate, vence o com mais votos.
Casos de teste
Entrada
III
Resultado
3
Entrada
IIII
Resultado
0
Entrada
XVI
Resultado
16
Entrada
(C)(D)(L)MMI
Resultado
452001
code-golf
math
function
roman-numerals
Kevin Brown
fonte
fonte
(C)(D)(L)MMI
seria 452.001. Como você conseguiu seu valor? Além disso, isso precisa suportar formulários "impróprios" (por exemplo, emIC
vez deXCIX
)?Respostas:
C ++:
914855 caracteresPode ser comprimido ainda mais.
Formatação ligeiramente mais agradável: 1582 caracteres
fonte
Javascript, 317 caracteres
Explicação:
Sem detecção de erro, são apenas 180 caracteres
Isso funciona da mesma maneira, mas aqui está uma formatação melhor:
fonte