Buat fungsi terpendek untuk mengonversi string angka Romawi menjadi bilangan bulat.
Aturan untuk setiap huruf dapat ditemukan di halaman Wikipedia . Huruf di atas 1.000 akan memiliki tanda kurung di sekitar mereka untuk memberi sinyal nilai yang lebih tinggi.
Persyaratan:
- Harus mengonversi angka Romawi 1 hingga 500.000
- Harus selesai dalam waktu kurang dari satu menit
- Tidak menggunakan fungsi bawaan yang dapat memberikan keuntungan (Mis: Fungsi yang mengubah angka Romawi menjadi bilangan bulat)
- Apakah fungsi
Fungsi tidak perlu mendukung pecahan. Setiap input yang tidak valid harus mengembalikan angka 0.
Fungsi terpendek menang. Dalam kasus seri, yang memiliki suara terbanyak menang.
Uji Kasus
Memasukkan
III
Keluaran
3
Memasukkan
IIII
Keluaran
0
Memasukkan
XVI
Keluaran
16
Memasukkan
(C)(D)(L)MMI
Keluaran
452001
Tidak layak bagi saya berarti ilegal dan karenanya harus mengembalikan 0.
—
Martin York
@ Anon: Nomornya adalah kesalahan ketik sejak saya mengubah kasus uji ketiga yang asli. Tidak perlu mendukung formulir yang tidak patut, karena akan dianggap sebagai input yang tidak valid.
—
Kevin Brown
Praktik standar (dan spesifikasi duplikat pertanyaan ini) adalah untuk input yang tidak valid menjadi perilaku yang tidak terdefinisi. Karena pertanyaan ini berumur empat tahun dan hanya memiliki satu jawaban, haruskah kita mengubah persyaratan?
—
lirtosiast
@KevinBrown Saya tidak melihat sumber atau penjelasan untuk surat tanda kurung. Saya pikir Anda harus mengubah spesifikasi agar sesuai dengan codegolf.stackexchange.com/q/16254/43319 dan kemudian jawaban dari sana dapat dimigrasikan di sini.
—
Adám
(C)(D)(L)MMI
akan menjadi 452.001. Bagaimana Anda mendapatkan nilai Anda? Selain itu, apakah ini perlu mendukung formulir "tidak patut" (misalnya,IC
bukanXCIX
)?