Bir sestina , üretebileceğimiz ilginç bir modeli takip eden bir şiir biçimidir. Her biri altı satırdan oluşan altı stanza sahiptir, burada ilk stanzadaki her satırın son sözcükleri, belirli bir desende döndürülen birbirini izleyen her stanzada satır sonlarını oluşturur. (Sonunda üç satırlık bir stanza var, ama bunun için endişelenmeyiz.) Elizabeth Bishop'un yaratıcı Sestina adlı ilk üç stanzına bir göz atın :
Eylül yağmuru eve düşer.
Başarısız ışıkta, yaşlı büyükanne
mutfakta
küçük Marvel Sobası'nın yanındaki çocukla oturuyor
, almanaktan şakaları okuyor,
gülüyor ve gözyaşlarını gizlemek için konuşuyor.Dengesiz gözyaşlarının
ve evin çatısında atılan yağmurun
hem almanak tarafından önceden verildiğini,
ancak sadece bir büyükanne tarafından bilindiğini düşünüyor.
Demir su ısıtıcısı ocakta şarkı söylüyor.
Biraz ekmek kesip çocuğa,Şimdi çay zamanı; ama çocuk sıcak siyah ocakta deli gibi dans eden
küçük gözyaşlarının , yağmurun evde dans etmesi gerektiği şekilde izliyor . Toplanan yaşlı büyükanne zeki almanakı kapatıyor...
Her satırın "ev", "büyükanne", "çocuk", "soba", "almanak" veya "gözyaşı" sözcüklerinden biriyle nasıl sona erdiğine dikkat edin. Sadece bu değil, kelimeler önceki stanza göre 6–1—5–2—4–3 deseninde sıralanmıştır. Sonunda bir spiral gibi görünüyor:
Programlı olarak tam bir sestina üretmekten hala birkaç yıl uzaktayız, ancak her stanzanın son kelimelerini uygun sırayla içeren bir şablon oluşturabiliriz. Altı satır biten kelimeler göz önüne alındığında, bu kurallara uyarak bir sestina için plan çıktısı veren bir program veya işlev yazın. Girdi için beklenen sonuç şudur 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
İlk stanza orijinal sırayla kelimeler, ikinci stanza ise ilkinden 6-1-5-2-4-3 düzenindedir. Üçüncü stanza, stanza 6'ya kadar olan ikinciye göre olan düzendir.
Giriş kelimelerinin her zaman yalnızca harf, büyük veya küçük harf olacağını varsayalım. Bunları bir dize dizisi veya harf olmayan bir karakterle (boşluk, yeni satır vb.) Sınırlandırılmış tek bir dize olarak alabilirsiniz. Çıktıda, satırlar satırsonu ( 0x0A
) ile ayrılır ve stanzlar iki satır satırla ayrılır . Sondaki satırsonu kabul edilebilir.
Bu kod golf , bayt en kısa kod kazanır. Bununla birlikte, tüm şiirin yapısını sıkıştırmak daha kısa olabilir, ancak her stanza'yı bir öncekine dayandıran bazı çözümler görmek istiyorum.
natural-language
etiketi hak ettiğinden emin değilim . Giriş altı anlamsız dizgi olsa bile algoritma aynıdır.