Context- freie Grammatik für romische Zahlen?
-
SG1 schrieb:
Na die kannst Du doch direkt ausschreiben:
Einerziffer -> I, II, III, IV, V, VI, VII, VIII, IX
Achso, dann kann ich z.b. analog dazu machen:
Dezimals -> X,XX...
Hunderte -> ...RZahl-> Einerziffer , Dezimals Einerziffer, Hunderte Dezimals Einerziffer
Führt das sicher zum eindeutige Grammatik dann?
-
Und was ist mit Zahlen wie CXCIX (=199)?
Und wie verhindert man Dinge wie CXCX (=200, aber eben falsch geschrieben).
-
hustbaer schrieb:
Und was ist mit Zahlen wie CXCIX (=199)?
Und wie verhindert man Dinge wie CXCX (=200, aber eben falsch geschrieben).Soll ok soweit sein:
Es wird bei mir so geparst:
CXCIX:
C (Hunderte, ok)
CX (Hunderte Dezimals, ok)
CXC (Hunderte Dezimals Hunderte, fail) -> andere Regel prüfen:
C XC(Hunderte Dezimals (XC) ok
CXC I (Hunderte Dezimals (XC) Einsen) , ok)
CXC IX (Hunderte Dezimals (XC) Einsen(I) Dezimals(X)) , fail) -> andere Regel prüfen:
C XC IX (Hunderte Dezimals (XC) Einsen(IX), akzeptiert )CXCX:
C (Hunderte, ok)
CX (Hunderte Dezimals, ok)
CXC (Hunderte Dezimals Hunderte, fail) -> andere Regel prüfen:
C XC(Hunderte Dezimals (XC) ok
C XC X (Hunderte Dezimals (XC) Dezimals(X)) ->andere Regel nötig, findet aber nicht.
-
OK, sorry, hab' nicht ausreichend darüber nachgedacht.
-
o4kareg schrieb:
Hallo zusammen,
Kann jemand die valide CFG für valide romische Zahlen erst bis Tausend definieren?
Kla ungültige romische Zahlen sollen nicht vorkommen.Die Menge ist endlich, eine einfache Auflistung sollte es tun.
-
knivil schrieb:
o4kareg schrieb:
Hallo zusammen,
Kann jemand die valide CFG für valide romische Zahlen erst bis Tausend definieren?
Kla ungültige romische Zahlen sollen nicht vorkommen.Die Menge ist endlich, eine einfache Auflistung sollte es tun.
Limit am Tausend war esrt fürs testen. Weiss jemand, könnten die alte Römer
beliebig lange Zahlen beschreiben? Die Nachfrage auf sage ich million oder
zehn-millionen Zahlen sollte doch zu dem Zeit sein ?
-
Erstmal alles einfach aufaddieren
1999 ist MDCCCCLXXXXVIIII (1000 (M) + 500 (D) + 400 (CCCC) + 50 (L) + 40 (XXXX) + 5 (V) + 4 (IIII))
Wenn du 4 aufeinanderfolgende C, X oder I hast, einfach den nächstgrößeren (bzw. den darauf foldenden) Wert mit der Ziffer vorangestellt stattdessen notieren (also IV für 4, IX für 9, XL für 40, aber nicht IL für 49)
also MCMXCIX (1000 (M) + 900 (CM) + 90 (XC) + 9 (IX))
-
zwutz schrieb:
Erstmal alles einfach aufaddieren
1999 ist MDCCCCLXXXXVIIII (1000 (M) + 500 (D) + 400 (CCCC) + 50 (L) + 40 (XXXX) + 5 (V) + 4 (IIII))
Wenn du 4 aufeinanderfolgende C, X oder I hast, einfach den nächstgrößeren (bzw. den darauf foldenden) Wert mit der Ziffer vorangestellt stattdessen notieren (also IV für 4, IX für 9, XL für 40, aber nicht IL für 49)
also MCMXCIX (1000 (M) + 900 (CM) + 90 (XC) + 9 (IX))
Mench, ich habe doch eine CFG gefragt,wie die blöde Zahlen funktionieren weiss ich ja. Die 4 aufeinander folgende Zahlen sind zwar erlaubt ist ja unelegant.
Auf meine Frage hab ich schon einen Antwort gefunden. Um grössere Zahlen ausdrucken machten sie:
________
ausdruck <- 100 mal ausdruck vergrössern ( dies kann man ja nich mit ASCII characters machen)(ausdruck) <- 1000 mal vergrössern ( also mal als C und umgekehrte C geschrieben)
|) war manchmal anstatt D
also dazu kommen die Regel:
Zahl -> (zahl) , (zahl) zahl
und was mache ich mit |) ?|) -> D ersetzen ist schon unbeschränkte Grammatik
-
Wofuer brauchst du eine Grammatik fuer roemische Zahhlen?
-
knivil schrieb:
Wofuer brauchst du eine Grammatik fuer roemische Zahhlen?
Ich wollte mal ausprobieren dies in CFG Parser reinzusmeissen und am ende soll es erkennt werden und das Wert berechnet werden.
-
o4kareg schrieb:
Ich wollte mal ausprobieren dies
Also etwas, das deine Aufmerksamkeit fuer 5 min bindet. Nimm was anderes zur Selbstbespassung.