En tant que terrible étudiant latin depuis plusieurs années, j'ai appris à détester beaucoup de choses sur le latin. Mais il y a une chose que j'aime.
Scansion latine.
La scansion est l'acte de déterminer le mètre d'une ligne de poésie particulière. Pour le latin, cela signifie délimiter chaque syllabe de la ligne comme "légère" ou "lourde".
En latin, la scansion a beaucoup de règles. Cependant, contrairement à l'anglais, la scansion latine est assez régulière et ne nécessite souvent aucune connaissance du vocabulaire ou de la grammaire latine. Pour ce problème, nous utiliserons un sous-ensemble simplifié de ces règles (le vrai latin n'a pas de spécification nette).
Avant de commencer la scansion, vous devez vous élider . Elision est la suppression des syllabes entre les mots pour faciliter la prononciation. (par exemple "il est" -> "il"). Contrairement à l'anglais, l'élision latine suit de très belles règles.
La voyelle finale d'un mot se terminant par une voyelle est omise si le mot suivant commence par une voyelle.
NAUTA EST -> NAUTEST
Il en va de même pour les mots se terminant par une voyelle suivi de "m".
FIDUM AGRICOLAM -> FIDAGRICOLAM
Le mot "h" initial du mot suivi d'une voyelle compte comme une voyelle unique à des fins d'élision et est toujours supprimé lorsqu'il est élidé.
MULTAE HORAE -> MULTORAE
ou
MULTAM HORAM -> MULTORAM
Après l'élision, nous pouvons commencer la scansion. La mise à l'échelle est effectuée sur un compteur spécifique. Le compteur pour ce défi est l' hexamètre dactylique . L'hexamètre dactylique a six "pieds" chaque pied se compose de deux ou trois syllabes. Les syllabes peuvent être longues ou courtes selon la voyelle. Chacun des cinq premiers pieds sera soit un dactyle, une longue syllabe suivie de deux courtes, soit une spondée, deux longues syllabes. Et le dernier pied sera un long suivi d'un anceps (court ou long, pour ce problème vous n'aurez pas à déterminer lequel).
Une voyelle en latin peut être courte ou longue
Un «i» pris en sandwich entre deux voyelles (par exemple eiectum) est une consonne. (c'est-à-dire un "j")
Un «i» commençant un mot suivi d'une voyelle (par exemple Iactus) est également une consonne
Un "u" après un "q" est aussi une consonne (c'est-à-dire un "v")
Les diphtongues (ae, au, ei, eu, oe et ui) sont composées de deux voyelles mais comptent comme une voyelle et sont toujours longues
Une voyelle avec deux ou plusieurs consonnes entre elle et la voyelle suivante est toujours longue
Pour la règle précédente, un "l" ou un "r" après un "b", "c", "d", "g", "p" ou "t" ne compte pas comme une consonne
"x" compte pour deux consonnes
"ch", "ph", "th" et "qu" comptent comme une consonne
La syllabe "que" à la fin d'un mot (après élision) est toujours courte
Si une voyelle n'est pas forcée par l'une des règles précédentes, elle peut être longue ou courte, cela dépendra du compteur
Votre tâche sera de prendre une ligne de latin et d'en produire la scansion. Vous prendrez la ligne sous forme de chaîne via une entrée standard et sortirez une chaîne représentant la scansion finale.
L'entrée ne contiendra que des espaces et des caractères AZ.
Pour représenter la scansion, vous allez sortir toutes les syllabes en |
délimitant la séparation des pieds. Une longue syllabe sera représentée par un -
tandis qu'une courte syllabe sera marquée par un v
et un anceps (la dernière syllabe de chaque ligne) sera marqué par un x
. S'il existe plusieurs solutions, comme il en existe souvent, vous pouvez générer n'importe laquelle d'entre elles.
Cas de test
Le début de l'Énéide de Virgile.
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
Autres stipulations
À la manière de la poésie latine, toutes les réponses doivent commencer par une invocation aux muses .
Le latin n'a que deux mots d'une lettre "e" et "a". Vous pouvez supposer qu'aucun autre mot d'une lettre n'apparaîtra en entrée.
la source
--vv
), c'est le cas, mais dans Italiam (-vv-
) dans le même verset, ce n'est pas le cas. Peut-être mettre Js en entrée? Avez-vous réellement une solution de travail générant cette sortie?Réponses:
sed,
402392374359363334333 octets- Homère (L'Iliade); confus pourquoi cette citation est ici? vérifiez les règles.
Pas exactement joué au golf, mais cela met en œuvre toutes les règles données sous la forme d'expressions régulières, qui se déroulent juste une par une pour atteindre la solution. Cela gère chaque ligne indépendamment, donc peut traiter une entrée multi-lignes entière.
Usage:
Panne:
Résultats pour les cas de test:
la source
vccvccv
qui deviendrait-??
au lieu de--?
- corrigé maintenant. On dirait qu'il est d'accord avec vos échantillons sur tout sauf le cas # 2 maintenant.