Latar Belakang
Tantangan ini terinspirasi oleh situs web ini , yang menerbitkan diagram berikut:
Diagram ini menunjukkan kepada kita bahwa ekspresi Angka Romawi terpanjang di bawah 250 adalah ekspresi 188, yang membutuhkan 9 angka untuk diekspresikan.
Tantangan
Simbol standar yang digunakan untuk mengekspresikan Angka paling Romawi adalah sebagai berikut: { I
, V
, X
, L
, C
, D
, M
}, di mana nilai-nilai numerik karakter yang M
= 1000, D
= 500, C
= 100, L
= 50, X
= 10, V
= 5, I
= 1.
Dalam tantangan ini, tujuan Anda adalah, diberi bilangan bulat positif n , menghitung jumlah representasi Angka Romawi yang valid yang dapat dikomposisikan melalui n gabungan simbol-simbol standar.
Kemudian, program Anda harus menampilkan hasil perhitungan ini!
Input : Bilangan bulat positif n .
Output : Jumlah panjang angka romawi yang valid n .
Aturan untuk Ekspresi Angka Romawi
Angka Romawi pada awalnya hanya memiliki pasangan "aditif", artinya angka selalu ditulis dalam urutan menurun, dan jumlah nilai semua angka adalah nilai angka.
Kemudian, pasangan subtraktif, penggunaan menempatkan angka yang lebih kecil di depan yang lebih besar untuk mengurangi yang lebih kecil dari yang lebih besar, menjadi hal biasa untuk mempersingkat ekspresi Angka Romawi. Pasang subtraktif tidak dapat dirantai, seperti dalam ekspresi tidak valid berikut: IXL
.
Berikut ini adalah aturan modern untuk pasangan aditif dan subtraktif.
- Hanya satu I, X, dan C yang dapat digunakan sebagai angka utama dalam bagian dari pasangan yang mengurangi.
- Saya hanya bisa ditempatkan sebelum V atau X dalam pasangan subtraktif.
- X hanya dapat ditempatkan sebelum L atau C dalam pasangan subtraktif.
- C hanya dapat ditempatkan sebelum D atau M dalam pasangan subtraktif.
- Selain pasangan subtraktif, angka harus dalam urutan menurun (artinya jika Anda menjatuhkan angka terkemuka dari setiap pasangan subtraktif, maka angka akan berada dalam urutan menurun).
- M, C, dan X tidak dapat disamakan atau dilampaui oleh denominasi yang lebih kecil.
- D, L, dan V masing-masing hanya dapat muncul sekali.
- Hanya M yang dapat diulang 4 kali atau lebih.
Catatan selanjutnya
Kami tidak akan menggunakan notasi bar ; alih-alih, kami hanya akan menambahkan lebih banyak M untuk mengekspresikan angka apa pun.
Ini adalah satu - satunya aturan yang akan kami ikuti untuk angka romawi kami. Itu berarti bahwa ekspresi aneh, seperti
IVI
, juga akan dianggap valid dalam sistem kami.Juga ingat bahwa kami tidak menghitung jumlah angka yang memiliki panjang ekspresi n , karena beberapa angka memiliki banyak ekspresi. Sebagai gantinya, kami hanya menghitung jumlah ekspresi yang valid.
Uji Kasus
1
→ 7
2
→ 31
3
→ 105
Saya memeriksa di atas dengan tangan, jadi pastikan untuk memeriksa kembali kasus uji, dan menambahkan lebih banyak jika Anda bisa!
Kriteria Menang
Ini adalah tantangan kode-golf , jadi bersenang-senanglah! Saya hanya akan menerima solusi yang dapat menangani setidaknya input dari 1 hingga 9. Lagi adalah bonus!
Edit
Seperti yang diminta oleh komentator, temukan di bawah ini, atau di tautan pastebin ini, 105 kombo yang saya hitung untuk n = 3
III IVI IXI IXV IXX VII XII XIV XIX XVI XXI XXV XXX XLI XLV XLX XCI XCV XCX XCL XCC LII LIV LIX LVI LXI LXV CII CIV CIX CVI CXI CXV CXX CXL CXC CLI CLV CLX CLX CLI CLV CLI CLV CLI CLV CLI CLV CMI CMV CMX CML CMC CMD CMM DII DIV DIX DVI DXI DXV DXX DXXL DLL DLI DLV DLX DCI DCV DCL DCL DCL DCC MII MIV MIX MVI MXI MXI MXI MXI MXI MXI MXI MXI MXI MXI MCV MCX MCX MCB MCB MC MD MD MD MD MD MMX MML MMC MMD MMM
Edit 2:
Gunakan kode non-golf berikut ini , milik Jonathan Allan untuk memeriksa hasil Anda.
Edit 3:
Saya minta maaf atas semua kesalahan dalam tantangan ini. Saya akan memastikan untuk melakukan pekerjaan yang lebih baik lain kali!