Como terrible estudiante de latín durante varios años, he aprendido a odiar muchas cosas sobre el latín. Sin embargo, hay una cosa que amo.
Scansion latina.
La escansión es el acto de determinar el metro de una línea particular de poesía. Para el latín, esto significa demarcar cada sílaba en la línea como "ligera" o "pesada".
En latín la escansión tiene muchas reglas. Sin embargo, a diferencia del inglés, la extensión latina es bastante regular y, a menudo, no requiere conocimiento de vocabulario o gramática latina para ser ejecutada. Para este problema, utilizaremos un subconjunto simplificado de esas reglas (el latín real no tiene una especificación clara).
Antes de comenzar la escalada debes eludir . Elision es la caída de sílabas entre palabras para facilitar la pronunciación. (por ejemplo, "él es" -> "él es"). A diferencia del inglés, la elisión latina sigue reglas muy agradables.
La vocal final de una palabra que termina con una vocal se omite si la siguiente palabra comienza con una vocal.
NAUTA EST -> NAUTEST
Lo mismo ocurre con las palabras que terminan en una vocal seguida de "m".
FIDAGRICOLAM FIDUM -> FIDAGRICOLAM
La palabra "h" inicial seguida de una vocal cuenta como una sola vocal para propósitos de elisión y siempre se descarta cuando se elide.
MULTAE HORAE -> MULTORAE
o
MULTAM HORAM -> MULTORAM
Después de la elisión podemos comenzar la tensión. La escala se realiza a un medidor específico. El medidor para este desafío es el hexámetro dactílico . El hexámetro dactílico tiene seis "pies" cada pie consta de dos o tres sílabas. Las sílabas pueden ser largas o cortas dependiendo de la vocal. Cada uno de los primeros cinco pies será un dactyl, una sílaba larga seguida de dos cortos, o un esponde, dos sílabas largas. Y el último pie será un largo seguido de un anceps (corto o largo, para este problema no tendrá que determinar cuál).
Una vocal en latín puede ser corta o larga
Una "i" intercalada entre dos vocales (por ejemplo, eiectum) es una consonante. (es decir, una "j")
Una "i" que comienza una palabra seguida de una vocal (por ejemplo, Iactus) también es una consonante
Una "u" después de una "q" también es una consonante (es decir, una "v")
Los diptongos (ae, au, ei, eu, oe y ui) están formados por dos vocales pero cuentan como una vocal y siempre son largas
Una vocal con dos o más consonantes entre ella y la siguiente vocal siempre es larga.
Para la regla anterior, una "l" o una "r" después de una "b", "c", "d", "g", "p" o "t" no cuentan como consonantes
"x" cuenta como dos consonantes
"ch", "ph", "th" y "qu" cuentan como una consonante
La sílaba "que" al final de una palabra (después de la elisión) siempre es corta
Si una vocal no es forzada por una de las reglas anteriores, puede ser larga o corta, esto dependerá del medidor
Su tarea será tomar una línea de latín y producir su extensión. Tomará la línea como una cadena a través de la entrada estándar y generará una cadena que representa la escala final.
La entrada contendrá solo espacios y caracteres AZ.
Para representar la escala, generará todas las sílabas con la |
demarcación de la separación de pies. Una sílaba larga estará representada por un -
tiempo, una sílaba corta estará marcada por v
ay un anceps (la última sílaba de cada línea) estará marcado por a x
. Si hay varias soluciones, como a menudo las habrá, puede enviar cualquiera de ellas.
Casos de prueba
El comienzo de la Eneida de Virgilio.
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
Estipulaciones adicionales
En la forma correcta de la poesía latina, todas las respuestas deben comenzar con una invocación a las musas .
El latín tiene solo dos palabras de una letra "e" y "a". Puede suponer que no aparecerán otras palabras de una letra como entrada.
fuente
--vv
) lo es, pero en Italiam (-vv-
) en el mismo verso no lo es. Tal vez poner Js en la entrada? ¿Realmente tiene una solución de trabajo que genera esta salida?Respuestas:
sed,
402392374359363334333 bytes- Homero (La Ilíada); confundido por qué esta cita está aquí? Revisa las reglas.
No es exactamente golf, pero esto implementa todas las reglas dadas en forma de expresiones regulares, que se ejecutan una por una para llegar a la solución. Esto maneja cada línea de forma independiente, por lo que puede procesar una entrada completa de varias líneas.
Uso:
Descompostura:
Resultados para casos de prueba:
fuente
vccvccv
se convertiría en-??
lugar de--?
- arreglado ahora. Parece que está de acuerdo con sus muestras en todos los casos, excepto el caso # 2 ahora.