Como um terrível aluno de latim por vários anos, aprendi a odiar muitas coisas sobre o latim. No entanto, há uma coisa que eu amo.
Digitalização em latim.
Escansão é o ato de determinar o medidor de uma determinada linha de poesia. Para o latim, isso significa demarcar cada sílaba na linha como "leve" ou "pesada".
Em latim, a escansão tem muitas regras. No entanto, diferentemente do inglês, a escansão do latim é bastante regular e geralmente não requer conhecimento do vocabulário ou gramática do latim para ser realizada. Para esse problema, usaremos um subconjunto simplificado dessas regras (o latim real não possui uma especificação precisa).
Antes de começar a escansão, você deve fugir . Elision são as sílabas que caem entre as palavras para facilitar a pronúncia. (por exemplo, "ele é" -> "ele é"). Ao contrário do inglês, a elisão latina segue regras muito boas.
A vogal final de uma palavra que termina com uma vogal é omitida se a próxima palavra começar com uma vogal.
NAUTA EST -> NAUTEST
O mesmo vale para as palavras que terminam em uma vogal seguida de "m".
FIDUM AGRICOLAM -> FIDAGRICOLAM
A palavra inicial "h" seguida de uma vogal conta como uma vogal única para fins de elisão e é sempre descartada quando é elidida.
MULTAE HORAE -> MULTORAE
ou
MULTAM HORAM -> MULTORAM
Após a elisão, podemos começar a escansão. A digitalização é feita para um medidor específico. O medidor para esse desafio é o hexâmetro dactílico . O hexâmetro dactílico tem seis "pés", cada pé consiste em duas ou três sílabas. As sílabas podem ser longas ou curtas, dependendo da vogal. Cada um dos primeiros cinco pés será um dáctilo, uma sílaba longa seguida por duas curtas, ou uma esponja, duas sílabas longas. E o último pé será um longo seguido de um anceps (curto ou longo, para esse problema, você não precisará determinar qual).
Uma vogal em latim pode ser curta ou longa
Um "i" imprensado entre duas vogais (por exemplo, eiectum) é uma consoante. (ou seja, um "j")
Um "i" que inicia uma palavra seguida por uma vogal (por exemplo, Iactus) também é uma consoante
Um "u" depois de um "q" também é uma consoante (ou seja, um "v")
Os ditongos (ae, au, ei, eu, oe e ui) são compostos de duas vogais, mas contam como uma vogal e são sempre longos
Uma vogal com duas ou mais consoantes entre ela e a próxima vogal é sempre longa
Para a regra anterior, "l" ou "r" após "b", "c", "d", "g", "p" ou "t" não contam como consoante
"x" conta como duas consoantes
"ch", "ph", "th" e "qu" contam como uma consoante
A sílaba "que" no final de uma palavra (após elisão) é sempre curta
Se uma vogal não for forçada por uma das regras anteriores, ela pode ser longa ou curta, isso depende do medidor
Sua tarefa será pegar uma linha de latim e produzir a escansão dela. Você entrará na linha como sequência via entrada padrão e produzirá uma sequência representando a varredura final.
A entrada conterá apenas espaços e caracteres AZ.
Para representar a escansão, você produzirá todas as sílabas com a |
demarcação da separação dos pés. Uma sílaba longa será representada por um -
tempo, enquanto uma sílaba curta será marcada por a v
e um anceps (a última sílaba de cada linha) será marcado por a x
. Se houver várias soluções, como sempre haverá, você poderá produzir qualquer uma delas.
Casos de teste
O início da Eneida de Virgílio.
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
Outras estipulações
Da maneira apropriada da poesia latina, todas as respostas devem começar com uma invocação às musas .
O latim possui apenas duas palavras de uma letra "e" e "a". Você pode supor que nenhuma outra palavra de uma letra aparecerá como entrada.
fonte
--vv
) é, mas em Italiam (-vv-
) no mesmo verso não é. Talvez colocar Js na entrada? Você realmente tem uma solução funcional gerando essa saída?Respostas:
sed,
402392374359363334333 bytes- Homero (A Ilíada); confuso por que esta citação está aqui? verifique as regras.
Não é exatamente um jogador de golfe, mas isso implementa todas as regras fornecidas na forma de expressões regulares, que são executadas uma a uma para chegar à solução. Isso lida com cada linha independentemente, para que possa processar uma entrada inteira de várias linhas.
Uso:
Demolir:
Resultados para casos de teste:
fonte
vccvccv
se tornaria, em-??
vez de--?
- corrigido agora. Parece que concorda com suas amostras em todos os casos, exceto o número 2 agora.