Sebuah sestina adalah format puisi yang mengikuti pola yang menarik yang bisa kita hasilkan. Ini memiliki enam bait dari enam baris masing-masing, di mana kata-kata terakhir dari setiap baris dalam bait pertama membentuk akhir baris di setiap bait berturut-turut, diputar dalam pola yang ditetapkan. (Ada juga bait tiga baris di akhir, tetapi kita tidak akan khawatir tentang itu.) Lihatlah tiga bait pertama dari Sestina bernama Elizabeth Bishop yang kreatif bernama :
September hujan turun di rumah.
Dalam cahaya yang hilang, nenek tua itu
duduk di dapur bersama anak
di samping Kompor Marvel Kecil,
membaca lelucon dari almanak,
tertawa dan berbicara untuk menyembunyikan air matanya.Dia berpikir bahwa air mata yang sama
dan hujan yang berdetak di atap rumah
keduanya dinubuatkan oleh almanak,
tetapi hanya diketahui oleh seorang nenek.
Ketel besi bernyanyi di atas kompor.
Dia memotong roti dan berkata kepada anak itu,Sekarang waktunya minum teh; tetapi anak
itu menyaksikan air mata kecil teko itu
menari-nari seperti orang gila di atas tungku hitam panas,
seperti hujan yang harus menari di rumah.
Merapikan, nenek tua
menutup almanak pintar...
Perhatikan bagaimana setiap baris diakhiri dengan salah satu dari enam kata "rumah," "nenek," "anak," "kompor," "almanak," atau "air mata." Bukan hanya itu, tetapi kata-kata tersebut diurutkan dalam pola 6–1—5–2—4–3, relatif terhadap bait sebelumnya. Itu akhirnya tampak seperti spiral:
Kami masih beberapa tahun lagi dari pemrograman menghasilkan sestina penuh, tetapi kami dapat membuat template yang menampilkan kata-kata akhir dari setiap bait dalam urutan yang tepat. Tulis sebuah program atau fungsi yang, mengingat kata-kata yang berakhir enam baris, mengeluarkan cetak biru untuk sestina, mengikuti aturan-aturan ini. Inilah hasil yang diharapkan untuk input 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
Bait pertama adalah kata-kata dalam urutan asli, bait kedua dalam urutan 6-1-5-2-4-3 dari yang pertama. Bait ketiga adalah urutan itu relatif terhadap bait kedua, dan seterusnya, sampai bait 6.
Asumsikan bahwa kata-kata input akan selalu hanya berupa huruf, huruf besar atau kecil. Anda bisa menganggapnya sebagai larik string atau string tunggal yang dibatasi oleh karakter non-huruf (spasi, baris baru, dll.). Dalam output, baris dipisahkan oleh baris baru ( 0x0A
), dan bait dipisahkan oleh dua baris baru. Newline tambahan dapat diterima.
Ini adalah kode-golf , jadi kode terpendek dalam byte menang. Yang sedang berkata, mungkin lebih pendek untuk mengompresi seluruh struktur puisi, tetapi saya ingin melihat beberapa solusi yang mendasari setiap bait pada sebelumnya.
natural-language
tag. Algoritmanya sama walaupun inputnya enam string omong kosong.