Сестрини це формат вірші , який слід цікавий зразок , який ми можемо генерувати. Він має шість строф по шість рядків у кожному, де останні слова кожного рядка в першій строфі складають закінчення рядків у кожній послідовній строфі, обертаються за заданим малюнком. (В кінці є також трирядкова строфа, але ми не будемо хвилюватися з цього приводу.) Погляньте на перші три строфи творчо названої Шестіною Єлизавети Єпископ :
Вересневий дощ падає на будинок.
У невдалому світлі старенька бабуся
сидить на кухні з дитиною
біля Малої печі Марвел,
читаючи анекдоти з альманаху,
сміючись і розмовляючи, щоб приховати сльози.Вона думає, що її рівнозначні сльози
та дощ, який б'ється по даху будинку,
були передбачені альманахом,
але відомі лише бабусі.
Залізний чайник співає на плиті.
Вона ріже хліб і каже дитині:Настав час чаю; але дитина
спостерігає, як маленькі важкі сльози текету
танцюють, як божевільні на гарячій чорній плиті,
як дощ повинен танцювати на будинок.
Прибираючи, стара бабуся
вішає розумний альманах...
Зверніть увагу, як кожен рядок закінчується одним із шести слів "будинок", "бабуся", "дитина", "плита", "альманах" або "сльози". Мало того, але слова впорядковані за шаблоном 6–1–5–2–4–3, відносно попередньої строфи. Це закінчується схожим на спіраль:
Ми ще кілька років від того, щоб програматично створити повну сестіну, але ми можемо створити шаблон із зображенням кінцевих слів кожної строфи в належному порядку. Напишіть програму або функцію, яка, з огляду на шість рядків, що закінчуються, виводить креслення для сестина, дотримуючись цих правил. Ось очікуваний результат для введення даних house grandmother child stove almanac tears
:
house
grandmother
child
stove
almanac
tears
tears
house
almanac
grandmother
stove
child
child
tears
stove
house
grandmother
almanac
almanac
child
grandmother
tears
house
stove
stove
almanac
house
child
tears
grandmother
grandmother
stove
tears
almanac
child
house
Перша строфа - це слова в початковому порядку, друга строфа - в порядку 6-1-5-2-4-3 від першої. Третя строфа - це порядок відносно другого тощо, аж до строфи 6.
Припустимо, що вхідними словами завжди будуть лише літери, великі або малі літери. Ви можете прийняти їх як масив рядків або окремий рядок, розмежований символом без літери (пробіл, новий рядок тощо). У висновку рядки розділені новими рядками ( 0x0A
), а строфи розділені двома новими рядками. Прийнятний новий рядок прийнятний.
Це код-гольф , тому найкоротший код у байтах виграє. Це, можливо, буде коротше стиснути всю структуру поеми, але я хотів би побачити деякі рішення, які базують кожну строфу на попередній.
natural-language
тег. Алгоритм той самий, навіть якщо вхід становить шість рядків химерності.