GALAXY MERCHANT TRADING GUIDE
Permasalahan
Anda memutuskan untuk pergi dari bumi setelah keruntuhan finansial terbaru meninggalkan
99,99% populasi bumi dengan 0,01% dari kekayaan. Untungnya, dengan sedikit uang yang tersisa
di rekening, Anda mampu menyewa pesawat ruang angkasa, meninggalkan bumi, dan terbang ke
seluruh galaksi untuk menjual logam dan kotoran (yang tampaknya sangat berharga).
Jual beli di seluruh galaksi mengharuskan Anda untuk mengubah angka dan unit, Anda akhirnya
memutuskan untuk menulis program untuk membantu Anda.
Angka yang digunakan untuk transaksi intergalaksi mengikuti konvensi yang mirip dengan angka
romawi dan tanpa program, Anda kesusahan mengumpulkan terjemahan yang sesuai di antara
mereka. Angka romawi adalah berdasarkan tujuh simbol dibawah ini :
Symbol Value
I 1
V 5
X 10
L 50
C 100
D 500
M 1,000
Angka dibentuk dengan menggabungkannya dengan simbol dan menjumlahkan nilainya. Misalnya,
MMVI adalah 1000 + 1000 + 5 + 1 = 2006. Umumnya, simbol ditempatkan dalam urutan nilai,
dimulai dengan nilai terbesar. Saat nilai yang lebih kecil mendahului nilai yang lebih besar, nilai
yang lebih kecil akan dikurangi nilai yang lebih besar, dan hasilnya ditambahkan ke total. Misalnya
MCMXLIV = 1000 + (1000 - 100) + (50 - 10) + (5 - 1) = 1944.
Simbol "I", "X", "C", dan "M" dapat diulang tiga kali berturut-turut, tetapi tidak boleh
lebih. (Mereka dapat muncul empat kali jika yang ketiga dan keempat dipisahkan oleh nilai yang
lebih kecil, seperti XXXIX.)
"D", "L", dan "V" tidak pernah bisa diulang.
"I" hanya dapat dikurangi dari "V" dan "X". "X" hanya dapat dikurangi dari "L" dan "C". "C" bisa
dikurangi dari "D" dan "M" saja. "V", "L", dan "D" tidak pernah bisa dikurangi.
Hanya satu simbol dengan nilai kecil yang dapat dikurangkan dari simbol denga nilai besar mana
pun.
Angka yang ditulis dalam angka arab dapat dipecah menjadi beberapa digit. Misalnya, 1903 terdiri
dari 1, 9, 0, dan 3. Untuk menulis angka romawi, setiap angka bukan nol harus diperlakukan secara
terpisah.
Dalam contoh di atas, 1.000 = M, 900 = CM, dan 3 = III. Oleh karena itu, 1903 = MCMIII.
- Sumber: Wikipedia ( http://en.wikipedia.org/wiki/Roman_numerals )
Test Input:
-------------
glob is I
prok is V
pish is X
tegj is L
glob glob Silver is 34 Credits
glob prok Gold is 57800 Credits
pish pish Iron is 3910 Credits
how much is pish tegj glob glob ?
how many Credits is glob prok Silver ?
how many Credits is glob prok Gold ?
how many Credits is glob prok Iron ?
how much wood could a woodchuck chuck if a woodchuck could chuck wood ?
Expecting Output:
---------------
pish tegj glob glob is 42
glob prok Silver is 68 Credits
glob prok Gold is 57800 Credits
glob prok Iron is 782 Credits
I have no idea what you are talking about
Solusi
Identifikasi pola input
Input dari permasalahan ini dapat dibagi menjadi 5 kategori, yaitu :
-
Definisi alias
input :glob is I prok is V pish is X tegj is L
Pola : [alias] is [simbol_romawi]
Pola jenis ini akan memberikannama lain/alias
dari simbol romawi (I-M). -
Definisi metal
input:glob glob Silver is 34 Credits glob prok Gold is 57800 Credits pish pish Iron is 3910 Credits
Pola input ini adalah : [alias] is [angka] Credits
-
Jawab pertanyaan
how many
input:how many Credits is glob prok Silver ? how many Credits is glob prok Gold ? how many Credits is glob prok Iron ?
Pola : [
h
/H
]ow many Credits is [alias] [nama_metal] ? -
Jawab pertanyaan
how much
input:how much is pish tegj glob glob ?
Pola : [
h
/H
]ow much is [alias] ? -
Input tidak diketahui
input:how much wood could a woodchuck chuck if a woodchuck could chuck wood ?
Pola :
Tidak cocok dengan semua pola diatas
Penanganan Input
Ide nya adalah menerapkan algoritma yang berbeda setiap kategori input. Penggolongan input adalah tanggung jawab dari Input Pattern Detector. Setelah input diketahui kategorinya, maka akan diberikan algoritma yang berbeda (see: Currency calculator ).
Rancangan aplikasi
Aplikasi android terdiri dari dua modul, yaitu :app
dan :currency_converter
. Semua proses logic penanganan permasalahan akan dilakukan di modul :currency_converter
, sehingga modul :app
hanya perlu memanggil fungsi .convert(text)
untuk mendapatkan output
dari text didalam editText
dan menampilkannya ke textView
.