Як страшний студент латинської мови за кілька років я навчився ненавидіти багато речей про латинську мову. Однак є одне, що я люблю.
Латинське сканування.
Сканування - це акт визначення метра певного рядка поезії. Для латинської це означає демаркацію кожного складу в рядку як "легкий" або "важкий".
У латинському скануванні є багато правил. Однак, на відміну від англійської, латинське сканування досить регулярне і часто не вимагає знання латинської лексики чи граматики. Для цієї проблеми ми будемо використовувати спрощений підмножина цих правил (справжня латинська мова не має чітких специфікацій).
Перш ніж розпочати перевірку, ви повинні зійти . Елісіон - це скидання складів між словами, щоб полегшити вимову. (наприклад, "він є" -> "він"). На відміну від англійської, латинський elision дотримується дуже приємних правил.
Кінцевий голосний слово, що закінчується на голосну, опускається, якщо наступне слово починається з голосного.
NAUTA EST -> NAUTEST
Те саме стосується слів, що закінчуються на голосну з наступним "m".
FIDUM AGRICOLAM -> FIDAGRICOLAM
Слово-початкове "h", яке супроводжується голосним, вважається єдиним голосним для цілей elision і завжди випадає, коли ухиляється.
MULTAE HORAE -> MULTORAE
або
MULTAM HORAM -> MULTORAM
Після елізіону ми можемо розпочати сканування. Сканування робиться до конкретного метра. Вимірювачем для цього завдання є дактиловий гекзаметр . Дактиловий гекзаметр має шість «футів», кожна ступня складається з двох-трьох складів. Склади можуть бути довгими або короткими залежно від голосного. Кожен з перших п’яти футів буде або дактилом, довгим складом з двома короткими, або спондером, двома довгими складами. І остання стопа буде довгою, за якою слідують предки (короткі чи довгі, для цієї проблеми вам не доведеться визначати, яка).
Голосна латинська мова може бути короткою або довгою
"Я", що між двома голосними (наприклад, eiectum), є приголосним. (тобто "j")
"Я", що починає слово, що супроводжується голосною (наприклад, Iactus), також є приголосним
"U" після "q" також є приголосним (тобто "v")
Дифтонги (ae, au, ei, eu, oe і ui) складаються з двох голосних, але рахуються як одна голосна і завжди довгі
Голосний з двома або більше приголосних між ним та наступним голосним завжди довгий
Для попереднього правила "l" або "r" після "b", "c", "d", "g", "p" або "t" не вважаються приголосними
"х" вважається двома приголосними
"ch", "ph", "th" і "qu" вважаються одним приголосним
Склад "черга" в кінці слова (після елісії) завжди короткий
Якщо голосну силу не примушує жодне з попередніх правил, вона може бути довгою або короткою, це залежатиме від метра
Ваше завдання полягатиме в тому, щоб взяти лінійку з латинської мови та проаналізувати її. Ви будете приймати рядок як рядок за допомогою стандартного введення та виводити рядок, що представляє остаточне сканування.
Вхід буде містити лише пробіли та символи AZ.
Щоб представити сканування, ви виведете всі склади з |
обмеженням поділу ніг. Довгий склад буде представлений через деякий -
час, а короткий склад буде позначений символом a, v
а попередник (останній склад кожного рядка) буде позначений символом a x
. Якщо є декілька рішень, як це часто є, ви можете вивести когось із них.
Випробування
Початок Енеїди Вергілія.
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
Подальші умови
Відповідно до латинської поезії, всі відповіді повинні починатися з призову до муз .
У латині є лише два слова з однієї літери "е" і "а". Ви можете припустити, що жодні інші слова з однієї літери не відображатимуться як вхідні дані.
--vv
) є, але в Italiam ( -vv-
) у тому ж вірші це не так. Може, покласти Js у вхід? Чи справді у вас є робоче рішення, що генерує цей вихід?