O conversor de números romanos pega um campo e trabalha nas duas direções de uma vez. Digite 1994 e ele responde MCMXCIV; digite MCMXCIV, em minúsculas ou com espaços entre as letras, e ele responde 1994. O cartão de resultado mostra o número arábico e o numeral romano lado a lado, cada um com seu próprio botão de copiar, e uma tabela de referência embaixo lista os sete símbolos base: I é 1, V é 5, X é 10, L é 50, C é 100, D é 500, M é 1.000.
Como o número se decompõe
O conversor percorre uma tabela de 13 passos do maior para o menor: M (1.000), CM (900), D (500), CD (400), C (100), XC (90), L (50), XL (40), X (10), IX (9), V (5), IV (4), I (1), e acrescenta cada símbolo quantas vezes couber. Para 1.994 isso é M para 1.000, CM para 900, XC para 90 e IV para 4: MCMXCIV. O ano 2.026 passa por MM, depois XX, depois VI: MMXXVI. O 42 do exemplo do campo cai em XL e depois II: XLII.
Os seis pares sustrativos
Só seis subtrações são legais: IV (4), IX (9), XL (40), XC (90), CD (400), CM (900). O validador é um padrão estrito sobre a ordem canônica, então 49 se escreve XLIX, nunca IL; 99 se escreve XCIX, nunca IC; e 44 se escreve XLIV, porque quatro X seguidos como em XXXXII quebram a regra de que um símbolo pode repetir no máximo três vezes. VV, IIII e XM são rejeitados do mesmo jeito: o padrão confere que o bloco M, depois o bloco C-ou-D, depois o bloco X-ou-L e depois o bloco I-ou-V aparecem em ordem descendente e nada mais.
O intervalo, e seu único furo
Um número arábico tem que ser um inteiro entre 1 e 3.999; 0 e 4.000 dão o erro de intervalo. 3.999 é o maior numeral romano canônico, e se escreve MMMCMXCIX: três M, depois CM, depois XC, depois IX. O furo: a entrada em romano não tem teto nenhum. O padrão deixa passar qualquer sequência de M, então MMMM se lê como 4.000 e MMMMM como 5.000, ainda que nenhuma entrada arábica pudesse produzir nenhuma das duas cadeias.
O que o campo aceita
O campo primeiro tenta ler o texto como número inteiro, e só se o texto for exatamente igual a esse número é que converte. Um 42 com espaços soltos nos dois lados funciona, porque o texto é cortado antes; mas 42.0 falha: ele se interpreta como 42, as duas cadeias diferem, então o texto é tratado como numeral romano e rejeitado. Um 1,994 com a vírgula se comporta do mesmo jeito. No lado romano, maiúsculas e espaços internos não importam: mcmxciv e m c m x c i v devolvem 1994.
Para onde o número vai
Numerais romanos sobrevivem em placas de ano, marcadores de capítulo e mostras de relógio, então 2.026 vira MMXXVI num diploma ou num cartão de título. MCMXCIV são sete caracteres onde 1994 são quatro; o contador de caracteres deixa concreta essa diferença de tamanho. Inverter as letras com o inversor de texto dá VICXMCM, que o conversor rejeita, uma demo rápida de o quão estritas são as regras de ordem. O conversor de base numérica cobre o outro lado dos sistemas numéricos, com 1994 como 11111001010 em binário e 7CA em hexadecimal, e a ferramenta de código morse é o parente mais próximo: outro esquema que escreve valores com um alfabeto pequeno e fixo.
Leituras relacionadas
A ferramenta césar rot13 é o outro clássico da era romana: desloca cada letra uma quantidade fixa em vez de compor um número com símbolos. Para outra guia com sabor de proporção, veja como calcular uma proporção de aspecto, e para o passo de limpeza do lado do texto, veja como usar uma ferramenta de escape.