Aus dem Kurs: Programmierrätsel: JavaScript
Römische Zahlen – Tutorial zu JavaScript
Aus dem Kurs: Programmierrätsel: JavaScript
Römische Zahlen
In alten Kirchen oder alten Gebäuden sieht man es manchmal, da ist eingraviert, wann ein Gebäude fertiggestellt wurde und zwar mit römischen Zahlen, die Tausend ist ein M, für 100 nimmt man ein C und so weiter. Und ihre Aufgabe besteht nun darin, ein Konverter zu schreiben, eine kleine App zu entwickeln oder zumindest mal das Herzstück für eine App, der man eine römische Zahl gibt, eine Zeichenkette mit M, C, L, X und so weiter, und aus dieser Zeichenkette kommt dann eine für uns gebräuchliche arabische Zahl in im Zehner-System heraus. Hier sehen Sie die Zeichenketten, die die Funktion annimmt, und die Zahlen, die sie dabei ausgeben muss. Die Zwei sind zwei Is, 2020 ist MM zweimal tausend und dann zweimal 10. Aber achten Sie darauf, dass nicht mehr als vier Zeichen hintereinander kommen dürfen, also vier gleiche Zeichen, das heißt, die Vier wird dargestellt durch eine Fünf, und da ist vorne dran ein I, also 5-1=4. So wird jetzt eine Vier dargestellt. Ähnlich sehen Sie es hier bei 1976, die 900 wird durch eine 1000 dargestellt und da habe ich vorne dran das 100 Zeichen, also CM. Sie können jetzt pausieren, sich selber eine Lösung ausdenken, ansonsten geht es gleich hier weiter mit meiner Lösung. Ich habe jetzt ausnahmsweise den Funktionsnamen nicht auf Englisch gewählt, sondern auf Latein convertire, das bekommt allerdings hier eine number, also eine Zeichenkette und gibt dann eben die Zahl zurück. Der Trick, der mich zur Lösung gebracht hat war der, dass ich diese Zahlen 900, 400, 90 und so weiter, die durch zwei Ziffern dargestellt werden, also wo links die linke Ziffer oder das linke Zeichen vom rechten Zeichen abgezogen wird, dass ich die als eigenständige Zahlen kodiert habe. Ob beispielsweise ein M, ein C vorne dran hat und berechnet das, sondern ich sage naja, wenn ich hier ein CM habe, dann gilt das wie eine 900. Und hier habe ich einfach die Werte aufgeschrieben, also für 900, 400 und so weiter, bis runter zur 1, wichtig hier die Doppelzeichen, die kommen zuerst dran. Denn wenn ich mal M ersetzt habe, dann würde ich einen CM nicht mehr erkennen, also brauche ich zuerst die Doppelten, die ich teste. Und die gehe ich der Reihe nach durch mit let n in nums, hier habe ich ja dieses Array, und jetzt gehe ich in meine Zeichenkette Number und ersetze nun das Vorkommen von diesem N hier, durch ein Plus-Zeichen gefolgt von dem Wert, den dieses Zeichen hat, also 900 beispielsweise. Und das mache ich hier mit einem new RegExp, weil ich möchte an diesem regulären Ausdruck hinten noch ein Flag ansetzen, G für Global, dass alle Vorkommende gefunden worden sind, hier ersetzt werden, und die ersetze ich durch eben ein Plus-Zeichen, gefolgt von der Zahl. und das ist eine einfache Rechnung, die können wir uns mal anschauen. Console.log (number), und dann gehe ich mal auf die Konsole. Und dann sehen Sie hier, dass bei den Tests zum Beispiel hier sowas herauskommt, aus diesem XXII wird ein Plus 10, Plus 10, Plus 1, Plus 1, und diese Zeichenketten hier, die packe ich einfach in diese Funktion eval, das heißt diese Zeichenkette wird ausgeführt, wird ausgerechnet und zurückgegeben.
Üben mit Projektdateien
Laden Sie die Dateien herunter, die von den Trainer:innen verwendet werden. So können Sie mitlesen und durch Ansehen, Zuhören und Üben lernen.
Inhalt
-
-
-
Kreditkartennummern maskieren4 Min. 9 Sek.
-
(Gesperrt)
Primzahl oder nicht?5 Min. 16 Sek.
-
(Gesperrt)
Kein X für ein U2 Min. 27 Sek.
-
(Gesperrt)
Benachbarte Quadratzahl2 Min. 52 Sek.
-
(Gesperrt)
Oh Tannenbaum5 Min. 55 Sek.
-
(Gesperrt)
Isogramme testen4 Min. 39 Sek.
-
(Gesperrt)
Ungerade Häufigkeiten entdecken3 Min. 26 Sek.
-
(Gesperrt)
Die goldene Mitte3 Min. 50 Sek.
-
(Gesperrt)
Lang und länger3 Min. 45 Sek.
-
(Gesperrt)
Vokale zählen3 Min. 5 Sek.
-
Auf und nieder3 Min. 10 Sek.
-
(Gesperrt)
Dreier und Fünfer2 Min. 36 Sek.
-
(Gesperrt)
Ausreißer aufspüren5 Min. 27 Sek.
-
(Gesperrt)
Doppelte Buchstaben aufspüren5 Min. 10 Sek.
-
(Gesperrt)
Der Zehn-Minuten-Spaziergang5 Min. 39 Sek.
-
(Gesperrt)
Einfacher IQ-Test3 Min. 25 Sek.
-
(Gesperrt)
Thomas gefällt das4 Min. 56 Sek.
-
(Gesperrt)
Einsen in binärer Schreibweise zählen4 Min. 7 Sek.
-
(Gesperrt)
Im Supermarkt warten6 Min. 9 Sek.
-
(Gesperrt)
Aus der Wüste: CamelCase4 Min. 31 Sek.
-
Römische Zahlen3 Min. 55 Sek.
-
(Gesperrt)
Streng geheim: Verschlüsselung4 Min. 57 Sek.
-
(Gesperrt)
Wortwerte zählen6 Min. 14 Sek.
-
(Gesperrt)
Bin ich schön? Narzisstische Zahlen3 Min. 29 Sek.
-
(Gesperrt)
DNA codieren4 Min. 5 Sek.
-