Heute verwenden die meisten Menschen auf der Welt arabische Ziffern (0–9). Doch wenn du zweitausend Jahre zurückreisen würdest, würdest du feststellen, dass die meisten Europäer stattdessen römische Zahlen verwendeten.
Um eine römische Zahl zu schreiben, verwenden wir die folgenden lateinischen Buchstaben, von denen jeder einen Wert hat:
| M | D | C | L | X | V | I |
|---|---|---|---|---|---|---|
| 1000 | 500 | 100 | 50 | 10 | 5 | 1 |
Eine römische Zahl ist eine Folge dieser Buchstaben, und ihr Wert ist die Summe der Werte der Buchstaben.
Zum Beispiel hat XVIII den Wert 18 (10 + 5 + 1 + 1 + 1 = 18).
Es gibt jedoch eine Regel, die alles etwas kniffliger macht: Derselbe Buchstabe darf nicht mehr als dreimal hintereinander verwendet werden.
Das bedeutet, dass wir Zahlen wie 4 nicht mit dem scheinbar naheliegenden IIII ausdrücken können.
Stattdessen verwenden wir für diese Zahlen eine Subtraktionsmethode zwischen zwei Buchstaben.
Wir betrachten 4 also nicht als 1 + 1 + 1 + 1, sondern als 5 - 1.
Und etwas verwirrend für unser modernes Denken schreiben wir die kleinere Zahl zuerst.
Das gilt nur in den folgenden Fällen: 4 (IV), 9 (IX), 40 (XL), 90 (XC), 400 (CD) und 900 (CM).
Bei römischen Zahlen kommt es auf die Reihenfolge an! Die Buchstaben (und die obigen Sonderfälle) müssen von links nach rechts nach abnehmendem Wert geordnet sein.
Hier sind einige Beispiele:
105 => CV
---- => --
100 => C
+ 5 => V
106 => CVI
---- => --
100 => C
+ 5 => V
+ 1 => I
104 => CIV
---- => ---
100 => C
+ 4 => IV
Und zum Abschluss ein komplexeres Beispiel:
1996 => MCMXCVI
----- => -------
1000 => M
+ 900 => CM
+ 90 => XC
+ 5 => V
+ 1 => I
Deine Aufgabe ist es, eine Zahl von arabischen in römische Ziffern umzuwandeln.
In dieser Übung beschäftigen wir uns nur mit den traditionellen römischen Ziffern, bei denen die größte Zahl MMMCMXCIX (oder 3.999) ist.
Es gibt viele verschiedene Wege, zwischen arabischen und römischen Ziffern umzurechnen. Wir empfehlen, zuerst einen naiven Ansatz zu wählen, um dich mit dem Konzept der römischen Ziffern vertraut zu machen, und dann nach effizienteren Methoden zu suchen.
Schau dir unbedingt unser Deep-Dive-Video am Ende an, um die verschiedenen Ansätze zu erkunden, die du wählen kannst!
Für diese Übung musst du eine Erweiterungsmethode schreiben. Weitere Informationen findest du unter Erweiterungsmethoden.
Melde dich bei Exercism an, um Visual Basic mit 113 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.
Entdecke eine Vielzahl verschiedener Lösungen für diese knifflige Übung: von Rekursion über tabellenbasierte Nachschlagetabellen und einer Lösung mit gemischten Stellenwertsystemen bis hin zu etwas simplem Schummeln mit Common Lisp.