Tugas Pemrograman 2 (Semua Kelompok Asistensi)
Bahasa Suku Terasing
Di perdalaman Afrika hiduplah suku primitif terasing. Untuk
berkomunikasi mereka menggunakan suatu bahasa yang aneh yang
HANYA menggunakan vokal a,i, u, e, dan o saja untuk sistem
alfabetnya (tidak ada spasi!). Setiap kata tersusun dari
huruf-huruf tersebut dengan kaidah sebagai berikut:
-
kata terbentuk dari susunan ai#uo di mana #
bisa merupakan (disubstitusi) oleh
-
string kosong,
-
## (jadi dalah hal ini berlaku ai##uo, ai###uo, dst.)
-
struktur dengan pola ai#uo juga (rekursif)
-
atau pasangan-pasangan huruf vokal tersebut yang
BUKAN ai atau uo.
Contoh:
'aiaiiaiuoouoaaaauo' memenuhi pola ai##uo
dengan # pertama = 'aiiaiuoouo' dan # kedua 'aaaa'
sementara # pertama memenuhi pola aiXuo
dengan # = 'iaiuoo'
-
Khususnya untuk nama orang terdapat aturan tambahan yaitu
nama hanya berpola ai#uo dengan kemunculan # tepat satu
kali serta implmentasi pola secara rekursif tepat sebanyak
dua kali,
Contoh:
'aiaieeuiaaoououo'
-
bilangan berpola ai#uo (seperti nama orang) namun pola
terdalam adalah aiuo, jumlah implementasi pola dikurangi 1,
menyatakan harga bilangan tersebut dan maksimum implementasi
adalah 4 dan bilangan yang lebih besar dari 3 dilakukan
seperti halnya bilangan berbasis 4,
Contoh:
'aiuo' = 0
'aiaiuouo' = 1
'aiaiaiuououo' = 2
'aiaiaiaiuouououo' = 3
'aiaiuouoaiaiaiuououo' = 12 (basis 4) = 6 (basis desimal)
Karena tidak adanya spasi maka deretan kata-kata akan ditulis
sambung menyambung sebagai suatu stream yang panjang dan dalam
tugas ini anda diminta membuat program yang memanfaatkan stack
untuk bisa memilah-milah kata-kata yang ada dalam stream serta
untuk dapat mengenali apakah itu hanya kata-kata saja, atau
merupakan nama-nama orang, atau bilangan (untuk bilangan, sebutkan
juga berapa harga dalam desimalnya).
Masukan program anda adalah file yang berisikan stream tersebut
dan keluaran yang dicetak oleh program adalah kata-kata tersebut.
Jika bilangan maka cetak juga harga desimalnya.
Dalam tugas ini anda dibatasi untuk menggunakan stack yang
anda coding sendiri (bukan yang disediakan Java!).