Bir metin dizesindeki kelimeleri hecelerle ayırarak heceleyecek bir program yazmakla görevlendirildiniz. Bu çok iş olurdu, bu yüzden bazı bölümleri atlamak istiyorsunuz, çünkü esasen mükemmel algoritma için gerekli telaffuzların bir tablosuna sahip olmak istemiyorsunuz. Ayrıca, bu görevin verilmesinin bir intikamı kadar mümkün olduğunca kısa (ve dolayısıyla okunamaz ve sürdürülemez) olmasını da istersiniz.
İki seçeneğiniz var:
- Dizeyi STDIN'den alan ve sonucu STDOUT'a veren bir program yazın.
- Dizeyi tek bir parametre olarak alan ve sonucu döndüren bir işlev yazın.
Şartname
- Bu durumda dize, tercih ettiğiniz dilde (bayt dizileri, karakter dizileri, dizeler ...) herhangi bir dize benzeri yapı anlamına gelir.
- Ünlüler
a, e, i, o, u - Verilen dize
1 <= n <= 10, her biri1 - 30karakterler arasında bir uzunluk ( dahil) içeren sözcüklere sahiptir. Çıktınız tireli kelimeler olmalıdır. - Tüm harfler küçüktür ve kelimeler her zaman boşluklarla ayrılır. Böylece, girdi karakterlerden oluşur
[a-z ] - Kuralları önem sırasına göre uygulayın.
- Bir kelime bölündüğünde, sözcüğün sağ yarısıyla tekrar başlayın.
Önem sırasına göre heceleme kuralları
İki ardışık aynı ünlüler biri (yani. Olarak saymak feettek sesli harf var, ancak beatve findingiki tane). Her hecede tam olarak bir sesli harf vardır, bu nedenle her sesli harf için bir hece vardır.
- Eğer tüm sözcük sadece dört harf vardır, bunlar değişmeden döndürür. (kelimenin geri kalanında bunu atla)
- Kelimede yalnızca bir sesli harf varsa, sözcüğü değiştirmeden geri gönderin.
- Kelimede birbirini takip eden iki sesli harf varsa, aralarında bölün (yani.
diaspora->di-as-po-ra) - İki veya daha fazla ünsüz iki sesli harf (aynı veya farklı) arasına geldiğinde
sis-ter, ünsüz kısım olmadığı sürece ilk ünsüzden (yani )cksonra bölün, bu durumda kelimeyi ondan sonra bölün. (ör.nickel->nick-el) - A
yiki sesli harf arasına geldiğinde, kelimeyi ondan sonra bölün (ör.paying->pay-ing). - Bir ünsüz iki sesli harf (aynı veya farklı) arasına geldiğinde, ünsüzün önüne bölün (yani.
dra-gon) - Bölme yapılamazsa kelimeyi değiştirmeden döndür.
Bu kuralları seçtim, çünkü sorunsuz bir şekilde tekrar tekrar uygulanabilirler ve telaffuz tablosu gerektirmezler. Bu nedenle, doğru değildirler ve örneğin kural # 5 genellikle doğru değildir. Genel durumda olsa da, öyle.
Misal
In: hello world
Out: hel-lo world
In: have a nice day
Out: have a nice day
In: pour some nickel and xenon there
Out: pour some nick-el and xe-non the-re
lua
x-e-nonmisin? Kural # 4 için referans?