Als schrecklicher Lateinstudent habe ich mehrere Jahre lang gelernt, viele Dinge über Latein zu hassen. Es gibt jedoch eine Sache, die ich liebe.
Lateinische Scansion.
Scansion ist der Akt der Bestimmung des Meters einer bestimmten Gedichtzeile. Für Latein bedeutet dies, jede Silbe in der Zeile als "leicht" oder "schwer" abzugrenzen.
Im Lateinischen hat Scansion viele Regeln. Im Gegensatz zu Englisch ist das lateinische Scansion jedoch ziemlich regelmäßig und erfordert oft keine Kenntnisse des lateinischen Vokabulars oder der lateinischen Grammatik. Für dieses Problem werden wir eine vereinfachte Teilmenge dieser Regeln verwenden (echtes Latein hat keine ordentliche Spezifikation).
Bevor Sie mit dem Scansion beginnen, müssen Sie sich entziehen . Elision ist das Ablegen von Silben zwischen Wörtern, um die Aussprache zu erleichtern. (zB "er ist" -> "er ist"). Im Gegensatz zu Englisch folgt die lateinische Elision sehr guten Regeln.
Der letzte Vokal eines Wortes, das mit einem Vokal endet, wird weggelassen, wenn das nächste Wort mit einem Vokal beginnt.
NAUTA EST -> NAUTEST
Gleiches gilt für Wörter, die mit einem Vokal gefolgt von "m" enden.
FIDUM AGRICOLAM -> FIDAGRICOLAM
Das Wortinitial "h" gefolgt von einem Vokal zählt zu Elisionszwecken als einzelner Vokal und wird immer gelöscht, wenn es entfernt wird.
MULTAE HORAE -> MULTORAE
oder
MULTAM HORAM -> MULTORAM
Nach der Wahl können wir mit der Scansion beginnen. Die Scansion erfolgt auf einen bestimmten Meter. Das Messgerät für diese Herausforderung ist ein daktylischer Hexameter . Dactylic Hexameter hat sechs "Fuß" jeder Fuß besteht aus zwei oder drei Silben. Die Silben können je nach Vokal entweder lang oder kurz sein. Jeder der ersten fünf Fuß ist entweder eine Daktylle, eine lange Silbe, gefolgt von zwei kurzen, oder eine Spondee, zwei lange Silben. Und der letzte Fuß wird ein langer sein, gefolgt von einem Anceps (kurz oder lang, für dieses Problem müssen Sie nicht bestimmen, welcher).
Ein Vokal in Latein kann entweder kurz oder lang sein
Ein "i" zwischen zwei Vokalen (z. B. Eiectum) ist ein Konsonant. (dh ein "j")
Ein "i", das ein Wort gefolgt von einem Vokal (z. B. Iactus) beginnt, ist ebenfalls ein Konsonant
Ein "u" nach einem "q" ist auch ein Konsonant (dh ein "v")
Diphthongs (ae, au, ei, eu, oe und ui) bestehen aus zwei Vokalen, zählen aber als ein Vokal und sind immer lang
Ein Vokal mit zwei oder mehr Konsonanten zwischen ihm und dem nächsten Vokal ist immer lang
Für die vorherige Regel zählt ein "l" oder ein "r" nach einem "b", "c", "d", "g", "p" oder "t" nicht als Konsonant
"x" zählt als zwei Konsonanten
"ch", "ph", "th" und "qu" zählen als ein Konsonant
Die Silbe "que" am Ende eines Wortes (nach der Elision) ist immer kurz
Wenn ein Vokal nicht durch eine der vorherigen Regeln erzwungen wird, kann er entweder lang oder kurz sein. Dies hängt vom Messgerät ab
Ihre Aufgabe wird es sein, eine Linie Latein zu nehmen und die Scansion davon zu produzieren. Sie nehmen die Zeile als Zeichenfolge über die Standardeingabe auf und geben eine Zeichenfolge aus, die die endgültige Erweiterung darstellt.
Die Eingabe enthält nur Leerzeichen und Zeichen AZ.
Um die Scansion darzustellen, geben Sie alle Silben mit der |
Abgrenzung der Fußtrennung aus . Eine lange Silbe wird durch eine -
Weile dargestellt, eine kurze Silbe durch ein v
und ein Anceps (die letzte Silbe jeder Zeile) durch ein x
. Wenn es wie so oft mehrere Lösungen gibt, können Sie jede davon ausgeben.
Testfälle
Der Beginn von Virgils Aeneid.
ARMA VIRUMQUE CANO TROIAE QUI PRIMUS AB ORIS -> -vv|-vv|--|--|-vv|-x (or -vv|-vv|--|-vv|--|-x)
ITALIAM FATO PROFUGUS LAVINIAQUE VENIT -> -vv|--|-vv|-vv|-vv|-x
LITORA MULTUM ILLE ET TERRIS IACTATUS ET ALTO -> -vv|--|--|--|-vv|-x
VI SUPERUM SAEVAE MEMOREM IUNONIS OB IRAM -> -vv|--|-vv|--|-vv|-x (or -vv|--|-vv|-vv|--|-x)
MULTA QUOQUE ET BELLO PASSUS DUM CONDERET URBEM -> -vv|--|--|--|-vv|-x
INFERRETQUE DEOS LATIO GENUS UNDE LATINUM -> --|-vv|-vv|-vv|-vv|-x
ALBANIQUE PATRES ATQUE ALTAE MOENIA ROMAE -> --|-vv|--|--|-vv|-x
Weitere Bestimmungen
In der richtigen Weise der lateinischen Poesie müssen alle Antworten mit einer Anrufung der Musen beginnen .
Latein hat nur zwei Ein-Buchstaben-Wörter "e" und "a". Sie können davon ausgehen, dass keine anderen Wörter mit einem Buchstaben als Eingabe angezeigt werden.
quelle
--vv
) ist es, aber in Italiam (-vv-
) im gleichen Vers ist es nicht. Vielleicht Js in die Eingabe setzen? Haben Sie tatsächlich eine funktionierende Lösung, die diese Ausgabe generiert?Antworten:
sed,
402392374359363334333 Bytes- Homer (Die Ilias); verwirrt, warum dieses Zitat hier ist? Überprüfen Sie die Regeln.
Nicht gerade Golf gespielt, aber dies implementiert alle vorgegebenen Regeln in Form von regulären Ausdrücken, die nur einzeln ausgeführt werden, um die Lösung zu erreichen. Dadurch wird jede Zeile unabhängig behandelt, sodass eine gesamte mehrzeilige Eingabe verarbeitet werden kann.
Verwendungszweck:
Nervenzusammenbruch:
Ergebnisse für Testfälle:
quelle
vccvccv
,-??
der--?
jetzt behoben würde. Sieht so aus, als ob es mit Ihren Proben in allen Fällen außer Fall 2 übereinstimmt.