Anda ditugaskan menulis program yang menyusun kata-kata dalam serangkaian teks, dengan memisahkannya dengan tanda hubung. Itu akan banyak pekerjaan, jadi Anda ingin melewati beberapa bagian, terutama karena Anda tidak ingin memiliki tabel pengucapan yang diperlukan untuk algoritma yang sempurna. Anda juga ingin membuatnya sesingkat mungkin (dan karenanya tidak dapat dibaca dan tidak dapat dipelihara) sebagai balas dendam karena diberi tugas ini.
Anda memiliki dua pilihan:
- Tulis program yang mengambil string dari STDIN dan output hasilnya ke STDOUT.
- Tulis fungsi yang menggunakan string sebagai parameter tunggal, dan mengembalikan hasilnya.
Spesifikasi
- Dalam hal ini, string berarti konstruksi seperti string dalam bahasa pilihan Anda (array byte, array karakter, string ...).
- Vokal adalah
a, e, i, o, u - String yang diberikan memiliki
1 <= n <= 10kata-kata, di mana masing-masing memiliki panjang antara1 - 30karakter, inklusif .. Output Anda harus kata-kata ditulis dgn tanda penghubung. - Semua huruf kecil dan kata-kata selalu dipisahkan dengan spasi. Jadi, input terdiri dari karakter
[a-z ] - Terapkan aturan dalam urutan kepentingan.
- Ketika sebuah kata dibagi, mulai lagi dengan bagian kanan kata tersebut.
Aturan untuk silabifikasi , sesuai urutan kepentingannya
Dua vokal yang sama berturut-turut dihitung sebagai satu (mis. Hanya feetmemiliki satu vokal, tetapi beatdan findingmemiliki dua). Setiap suku kata memiliki tepat satu vokal, sehingga ada satu suku kata untuk setiap vokal.
- Jika seluruh kata hanya memiliki empat huruf, kembalikan tidak berubah. (lewati ini selama sisa kata)
- Jika kata hanya memiliki satu vokal, kembalikan kata tidak berubah.
- Jika kata tersebut memiliki dua vokal berturut-turut, bagilah di antara keduanya (mis.
diaspora->di-as-po-ra) - Ketika dua atau lebih konsonan berada di antara dua vokal (sama atau berbeda), bagi setelah konsonan pertama (yaitu.
sis-ter) Kecuali bagian konsonanck, dalam hal ini membagi kata setelah itu. (mis.nickel->nick-el) - Ketika a
ymuncul di antara dua vokal, bagilah kata setelahnya (mis.paying->pay-ing). - Ketika satu konsonan muncul di antara dua vokal (sama atau berbeda), bagi sebelum konsonan (mis.
dra-gon) - Kembalikan kata tidak berubah jika tidak ada pembagian yang bisa dilakukan.
Saya memilih aturan-aturan ini, karena mereka dapat diterapkan secara rekursif tanpa masalah dan tidak memerlukan tabel pengucapan. Dengan demikian, mereka tidak akurat, dan misalnya aturan # 5 sering tidak benar. Namun, dalam kasus umum.
Contoh
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-non? Referensi untuk aturan # 4?