Bir portmanteau kelimesi , her kelimenin bir parçası olan ve onları tek bir yeni kelimeye dönüştüren iki kelimenin birleşimidir. Örneğin, aslan + kaplan => liger .
Bir çift giriş kelimesinden portmanteaus üretmek için bir program yazalım. Bilgisayarlar İngilizce’de en iyisi değildir, bu yüzden çıktı portmanteaus’un göze ve kulağa hoş gelmesini sağlamak için bazı kurallar koymamız gerekir.
(Buradaki örnekler netlik sağlamak için önek ve sonek arasında bir ayırıcı ile gösterilmiştir: li|ger
. Bununla birlikte, programın gerçek çıkışları bir ayırıcı olmamalıdır: liger
.)
- Her portmanteau, ikinci kelimenin boş olmayan bir son ekiyle birleştirilmiş ilk kelimenin boş olmayan bir ön ekinden oluşur: evet
li|ger
, hayır|iger
. - Önek bir sesli harfle bitiyorsa, sonek bir ünsüzle başlamalı ve bunun tersi: evet,
lio|ger
veyal|er
, hayırlio|iger
veya veyal|ger
. Ünlü veya ünsüz olarak sayılmaya karar verebilirsinizy
. Bununla birlikte, çözümünüz bir seçenek seçmeli ve buna bağlı kalmalıdır. - Ortaya çıkan kelime, tam olarak orijinal sözcüklerden hiçbirini içermemelidir: evet ila
lio|ger
, hayırlion|iger
veyali|tiger
.- Bu kural, söz konusu kısım her iki kelimenin de bölümlerinden oluşsa bile geçerlidir:
two
+ girişi ilewords
, çıkıştw|ords
hala yasadışıdır çünkü alt dizeyi içerirwords
. (Bu çift için geçerli olan tek çıktı olacaktırt|ords
.)
- Bu kural, söz konusu kısım her iki kelimenin de bölümlerinden oluşsa bile geçerlidir:
Programınız veya işleviniz iki kelime almalı ve bu sözcüklerden o sırayla oluşturulabilecek tüm hoş portmanteausların bir listesini çıkarmalı / vermelidir .
ayrıntılar
- Standart giriş ve çıkış yöntemleri uygulanır. Standart boşluklar yasaktır.
- Kelimeler yalnızca küçük harflerden oluşacaktır (veya eğer isterseniz, yalnızca büyük harflerden).
- İki giriş sözcüğünü liste, bağlantı, iki ayrı giriş, harf sınırlayıcı olmayan tek bir dize vb. Olarak alabilirsiniz.
- Çıktı formatı benzer şekilde esnektir; Bir dize döndürür veya çıkarırsanız, bir portmanteau sözcüğünün bittiği ve bir sonrakinin başladığı yer netlenecek şekilde sınırlandırılmalıdır.
- Bir portmanteau kelimenin içinde sınırlayıcılar olmamalıdır.
- Çıktı listenizde yinelenen sonuçlar varsa sorun değil; Ayrıca kopyaları kaldırmak da sorun değil.
Test durumları
> lion, tiger
< liger, ler, liger, lir, lioger, lior
> tiger, lion
< tion, ton, tin, tigion, tigon, tigen
> spoon, fork
< sork, spork, spork, spok, spoork, spook
> smoke, fog
< sog, smog, smog, smokog
> gallop, triumph
< giumph, gumph, gariumph, gamph, gaph, gah, galiumph, galumph, galliumph, gallumph, galloriumph, gallomph, galloh
> breakfast, lunch
< bunch, brunch, brench, brech, breh, breanch, breach, breah, breakunch, breakfunch, breakfanch, breakfach, breakfah, breakfasunch
> two, words
< tords
> harry, ginny (if y is treated as a consonant)
< hinny, hanny, hany, hay, harinny, harrinny
> harry, ginny (if y is treated as a vowel)
> hinny, hy, hanny, hany, harinny, hary, harrinny
Referans çözümü
İşte Pip'de referans çözümü ( y
ünsüz gibi davranır ).
Bu kod golf : Her dilde en kısa cevap kazanır!