C'est l'année MDLXVII dans un monde où l'empire romain n'est jamais tombé et l'effondrement dans les âges sombres ne s'est jamais produit. En raison de la période prolongée de Pax Romana, la stabilité économique de l'empire a permis à la technologie de progresser à un rythme rapide.
Les Romains ont commencé à barboter avec les circuits et ont inventé une calculatrice ingénieuse qui ne nécessite pas l'utilisation d'un bouton "égal". Ils l'appellent "la notation polonaise romaine"
Pour effectuer un calcul, ils entrent d'abord leurs opérandes, puis l'opération.
Par exemple, 100 + 11 * 20 serait C XI XX * +
.
aditionellement
Les Romains ont constaté qu'ils ont souvent besoin de faire plusieurs calculs en même temps, et préféreraient que la méthode retourne chaque valeur "sur la pile" dans une sorte de structure de type tableau / liste / tuple. (par exemple X I + X I - CC II +
reviendrait [11, 9, 202])
Le défi est de développer un programme de calculateur capable de faire ces calculs.
Clarification : la notation soustractive est requise. Je n'avais pas réalisé que ce n'était pas une caractéristique reconnue dans l'ancien empire romain. La tâche était donc ambiguë et je m'en excuse.
Lignes directrices minimales
- Votre sortie sera en chiffres arabes.
- Vous avez seulement besoin de convertir des chiffres romains jusqu'à 5000.
- Vous devrez prendre en charge les opérations +, -, /, * (addition, soustraction, division et multiplication).
- Que la division soit basée sur une virgule flottante ou sur un entier est spécifique à l'implémentation. Soit fonctionne pour ce défi.
- Votre sortie devra prendre en charge des nombres jusqu'à 4 milliards.
- Réponse la plus courte dans l'ensemble, ET dans chaque langue gagne. Il s'agit d'un Code Golf Challenge mais j'adore la variété.
En cas d'égalité, des facteurs tels que la prise en charge des chiffres romains au-dessus de 5000 ou des opérations supplémentaires seront considérés comme la première soumission sera gagnante.