Hintergrund
Diese Herausforderung wurde von dieser Website inspiriert , auf der das folgende Diagramm veröffentlicht wurde:
Dieses Diagramm zeigt uns, dass der längste römische Ziffernausdruck unter 250 der von 188 ist, für dessen Angabe 9 Ziffern erforderlich sind.
Herausforderung
Die Standardsymbole verwendet meisten römischen Ziffern auszudrücken sind: { I
, V
, X
, L
, C
, D
, M
}, wobei die numerischen Werte Zeichen M
= 1000, D
= 500, C
= 100, L
= 50, X
= 10, V
= 5 I
= 1 ist .
In dieser Herausforderung besteht Ihr Ziel darin, bei einer positiven Ganzzahl n die Anzahl der gültigen Darstellungen römischer Zahlen zu berechnen, die durch Verketten von n der Standardsymbole erstellt werden können.
Dann muss Ihr Programm das Ergebnis dieser Berechnung ausgeben!
Eingabe : Eine positive ganze Zahl n .
Ausgabe : Die Anzahl der gültigen römischen Zahlen mit der Länge n .
Regeln für römische Zahlen
Römische Ziffern hatten ursprünglich nur "additive" Paarungen, was bedeutet, dass Ziffern immer in absteigender Reihenfolge geschrieben wurden und die Summe der Werte aller Ziffern der Wert der Zahl war.
Später wurde die subtraktive Paarung zur Verkürzung der Ausdrücke der römischen Zahl üblich, indem eine kleinere Zahl vor eine größere gestellt wurde, um die kleinere von der größeren zu subtrahieren. Subtraktiven Paare können nicht angekettet, wie in dem folgenden ungültigen Ausdruck werden: IXL
.
Das Folgende sind die modernen Regeln für die additive und subtraktive Paarung.
- In einem subtraktiven Paar kann nur ein I, X und C als führende Ziffer verwendet werden.
- Ich kann nur in einem subtraktiven Paar vor V oder X gesetzt werden.
- X kann nur in einem subtraktiven Paar vor L oder C gesetzt werden.
- C kann nur in einem subtraktiven Paar vor D oder M gesetzt werden.
- Mit Ausnahme von subtraktiven Paaren müssen die Ziffern in absteigender Reihenfolge angegeben werden (dh, wenn Sie die führende Ziffer jedes subtraktiven Paars ablegen, werden die Ziffern in absteigender Reihenfolge angegeben).
- M, C und X können von kleineren Nennwerten nicht erreicht oder überschritten werden.
- D, L und V dürfen jeweils nur einmal vorkommen.
- Nur M kann 4 oder mehrmals wiederholt werden.
Weitere Hinweise
Wir werden die Balkennotation nicht verwenden. Stattdessen werden wir einfach weitere Ms hinzufügen , um eine beliebige Zahl auszudrücken.
Dies sind die einzigen Regeln, die wir für unsere römischen Ziffern befolgen werden. Dies bedeutet, dass auch ungerade Ausdrücke wie
IVI
in unserem System als gültig angesehen werden.Denken Sie auch daran, dass wir nicht die Anzahl der Zahlen mit Ausdrücken der Länge n zählen , da einige Zahlen mehrere Ausdrücke haben. Stattdessen zählen wir nur die Anzahl der gültigen Ausdrücke.
Testfälle
1
→ 7
2
→ 31
3
→ 105
Ich habe die obigen Angaben von Hand überprüft. Überprüfen Sie daher die Testfälle sorgfältig und fügen Sie weitere hinzu, wenn Sie können.
Gewinnkriterien
Dies ist eine Code-Golf- Herausforderung, also viel Spaß! Ich akzeptiere nur Lösungen, die mindestens Eingaben von 1 bis 9 verarbeiten können. Mehr ist Bonus!
Bearbeiten
Wie von Kommentatoren gefordert, finden Sie unten oder in diesem Pastebin-Link die 105 Combos, die ich für n = 3 gezählt habe
III IVI IXI IXV IXX VII XII XIV XIX XVI XXI XXV XXX XLI XLV XLX XCI XCV XCX XCL XCC LII LIV LIX LVI LXI LXV LXX CII CIV CIX CVI CXI CXV CXX CXL CXC CLI CLX CCI CCV CCX CDC CMI CMV CMX CML CMC CMD CMM DII DIV DIX DVI DXI DXV DXX DXL DXC DLI DLV DLX DCI DCX DCL DCC MII MIV MIX MVI MXI MXV MXX MXC MLI MLV MLX MCI MCV MCX MCL MCC MCD MCM MDM MDM MDM MMX MML MMC MMD MMM
Bearbeiten 2:
Verwenden Sie den folgenden Code , der nicht für Golfspieler bestimmt ist , mit freundlicher Genehmigung von Jonathan Allan, um Ihre Ergebnisse zu überprüfen.
Edit 3:
Ich entschuldige mich für alle Fehler bei dieser Herausforderung. Ich werde sicher gehen, dass ich das nächste Mal einen besseren Job mache!