Überblick
Die alten Römer entwickelten ein Zahlensystem mit lateinischen Buchstaben, das ihnen gute Dienste leistete und das von der modernen Zivilisation immer noch verwendet wird, wenn auch in viel geringerem Maße. In der Zeit seiner Verwendung hätten die Römer lernen müssen, diese Zahlen zu verwenden und zu manipulieren, um für viele Anwendungen von großem Nutzen zu sein. Wenn zum Beispiel ein Mann 35 Ochsen besaß und 27 weitere beschaffte, wie würde er dann die neue Summe kennen, außer sie alle zu zählen? ( Ok, das und mit einem Abakus ... ) Wenn die Römer es könnten, könnten wir es sicherlich auch herausfinden.
Ziel
Schreiben Sie den kürzesten Algorithmus / die kürzeste Funktion / das kürzeste Programm, mit dem zwei römische Ziffern addiert werden , und geben Sie das Ergebnis aus, ohne die Zeichenfolgendarstellung einer der Eingaben in eine Zahl umzuwandeln.
Regeln / Einschränkungen
Aufgrund historischer / vormittelalterlicher Inkonsistenzen bei der Formatierung werde ich einige nicht standardmäßige (für die moderne Verwendung) Regeln für die Rechtschreibung skizzieren. Siehe die unten stehende Wertanleitung als Beispiel.
- Die Buchstaben I, X, C und M können bis zu vier Mal hintereinander wiederholt werden, jedoch nicht mehr. D, L und V können niemals wiederholt werden.
- Der Buchstabe unmittelbar rechts von einem anderen Buchstaben in der römischen Darstellung hat den gleichen oder einen geringeren Wert als der links davon.
- Mit anderen Worten,
VIIII == 9
aberIX != 9
und ist ungültig / nicht erlaubt.
- Mit anderen Worten,
- Alle Eingabewerte betragen 2.000 (MM) oder weniger. Für Zahlen größer als M ist keine Darstellung erforderlich.
- Alle Eingabewerte sind eine gültige römische Ziffer gemäß den obigen Regeln.
- Sie dürfen im Rahmen Ihrer Lösung keine Zahlen in Dezimal-, Binär- oder andere Zahlensysteme konvertieren (Sie können gerne eine solche Methode verwenden, um Ihre Ergebnisse zu überprüfen ).
- Dies ist Code Golf, also gewinnt der kürzeste Code.
Werteführer
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
Beispiele
XII + VIII = XX (12 + 8 = 20)
MCCXXII + MCCXXII = MMCCCCXXXXIIII (1,222 + 1,222 = 2,444)
XXIIII + XXXXII = LXVI (24 + 42 = 66)
Wenn weitere Erläuterungen erforderlich sind, fragen Sie bitte.