セスティーナは、我々が生成できることは興味深いパターンを次の詩の形式です。それぞれ6行の6つのスタンザがあり、最初のスタンザの各行の最後の単語が、連続した各スタンザの行末を設定パターンで回転させます。(3行のスタンザは終わりでもありますが、我々はその心配はありません。)エリザベス・ビショップ創造という名前の最初の3つのスタンザをご覧くださいセスティーナを:
9月の雨が家に降ります。
失敗した光の中で、おばあさん
は台所で
リトルマーベルストーブのそばに座って
、年鑑の冗談を読んで、
笑って話をして涙を隠します。彼女は、彼の彼岸の涙
と家の屋根に降りかかる雨の
両方が年鑑によって予告されて
いたが、祖母にしか知られていないと考えている。
ストーブの上で鉄瓶が歌います。
彼女はパンを切って子供に言います今はお茶の時間です。しかし、子供
は湯沸かし器の小さな激しい涙
が熱い黒いストーブの上で狂ったように踊るのを見て
、雨が家で踊らなければならない方法です。
片付けて、おばあさん
は賢い年鑑を切る...
各行が「家」、「祖母」、「子供」、「ストーブ」、「年鑑」、または「涙」の6つの単語のいずれかで終わることに注意してください。それだけでなく、単語は前のスタンザと比較してパターン6–1–5–2–4–3で順序付けられます。最終的にはスパイラルのように見えます。
プログラムで完全なsestinaを生成するのにはまだ数年かかりますが、各スタンザの終了ワードを適切な順序でフィーチャーしたテンプレートを作成できます。これらのルールに従って、6行で終わる単語が与えられた場合に、sestinaの設計図を出力するプログラムまたは関数を作成します。入力の期待される結果は次の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
最初のスタンザは元の順序の単語で、2番目のスタンザは最初の順序から6-1-5-2-4-3の順序です。3番目のスタンザは2番目のスタンザに対する相対的な順序で、以下同様に、スタンザ6まで続きます。
入力語は常に文字のみ、大文字または小文字であると仮定します。文字列の配列または非文字文字(スペース、改行など)で区切られた単一の文字列として使用できます。出力では、行は改行(0x0A
)で区切られ、スタンザは2つの改行で区切られます。末尾の改行は許容されます。
これはcode-golfであるため、バイト単位の最短コードが優先されます。そうは言っても、詩の構造全体を圧縮する方が短いかもしれませんが、各スタンザを前のものに基づいたソリューションをいくつか見たいと思います。
natural-language
タグに値するかどうかはわかりません。アルゴリズムは、入力が6つの文字列である場合でも同じです。