Le convertisseur de nombres romains prend un seul champ et travaille dans les deux sens à la fois. Saisissez 1994 et il répond MCMXCIV ; saisissez MCMXCIV, en minuscules ou avec des espaces entre les lettres, et il répond 1994. La carte de résultat montre le nombre arabe et le nombre romain côte à côte, chacun avec son propre bouton de copie, et un tableau de référence en bas liste les sept symboles de base : I vaut 1, V vaut 5, X vaut 10, L vaut 50, C vaut 100, D vaut 500, M vaut 1 000.
Comment le nombre se décompose
Le convertisseur parcourt un tableau de 13 étapes du plus grand au plus petit : 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), et il ajoute chaque symbole autant de fois qu'il tient. Pour 1 994, cela fait M pour 1 000, CM pour 900, XC pour 90 et IV pour 4 : MCMXCIV. L'année 2 026 passe par MM, puis XX, puis VI : MMXXVI. Le 42 du champ d'exemple tombe sur XL puis II : XLII.
Les six paires soustractives
Seules six soustractions sont légales : IV (4), IX (9), XL (40), XC (90), CD (400), CM (900). Le validateur est un motif strict sur l'ordre canonique, donc 49 s'écrit XLIX, jamais IL ; 99 s'écrit XCIX, jamais IC ; et 44 s'écrit XLIV, parce que quatre X d'affilée comme dans XXXXII violent la règle selon laquelle un symbole peut se répéter au maximum trois fois. VV, IIII et XM sont rejetés de la même façon : le motif vérifie que le bloc M, puis le bloc C-ou-D, puis le bloc X-ou-L puis le bloc I-ou-V apparaissent en ordre décroissant et rien d'autre.
La plage, et son unique trou
Un nombre arabe doit être un entier compris entre 1 et 3 999 ; 0 et 4 000 reçoivent l'erreur de plage. 3 999 est le plus grand nombre romain canonique, et il s'écrit MMMCMXCIX : trois M, puis CM, puis XC, puis IX. Le trou : la saisie en romain n'a aucune limite haute. Le motif laisse passer n'importe quelle suite de M, donc MMMM se lit 4 000 et MMMMM 5 000, alors qu'aucune saisie arabe ne pourrait produire ni l'une ni l'autre des deux chaînes.
Ce que le champ accepte
Le champ d'abord essaie de lire le texte comme un nombre entier, et ce n'est que si le texte est exactement égal à ce nombre qu'il convertit. Un 42 avec des espaces perdus des deux côtés fonctionne, parce que le texte est d'abord rogné ; mais 42.0 échoue : il se lit 42, les deux chaînes diffèrent, donc le texte est traité comme nombre romain et rejeté. Un 1,994 avec sa virgule se comporte pareil. Côté romain, les majuscules et les espaces intérieurs n'ont pas d'importance : mcmxciv et m c m x c i v renvoient 1994.
Où le nombre travaille
Les nombres romains survivent sur les plaques d'année, les marqueurs de chapitre et les cadrans d'horloge, donc 2 026 devient MMXXVI sur un diplôme ou un carton-titre. MCMXCIV fait sept caractères là où 1994 en fait quatre ; le compteur de caractères rend cette différence de longueur concrète. Inverser les lettres avec l'inverseur de texte donne VICXMCM, que le convertisseur refuse, une démo rapide de la sévérité des règles d'ordre. Le convertisseur de base numérique couvre l'autre face des systèmes numériques, avec 1994 en 11111001010 en binaire et 7CA en hexadécimal, et l'outil code morse est le parent le plus proche : un autre schéma qui écrit des valeurs avec un alphabet petit et fixe.
Lectures liées
L'outil césar rot13 est l'autre classique de l'ère romaine : il décale chaque lettre d'une quantité fixe au lieu de composer un nombre avec des symboles. Pour un autre tutoriel au goût de proportion, voyez comment calculer un rapport d'aspect, et pour l'étape de nettoyage côté texte, voyez comment utiliser un outil d'échappement.