Deskripsi tantangan
Kami memiliki beberapa tantangan yang melibatkan urutan Tampilan-dan-katakan . Pengingat cepat:
- Urutan dimulai dengan
1
, - Istilah selanjutnya dari urutan ini dihasilkan dengan menyebutkan setiap kelompok digit berulang dalam istilah sebelumnya,
Jadi beberapa istilah pertama adalah:
1 "one"
11 "one one" (we look at the previous term)
21 "two ones"
1211 "one two, one one"
111221 "one one, one two, two ones"
312211 "three ones, two twos, one one"
Sekarang mari kita lakukan hal yang sama, tetapi gunakan Angka Romawi sebagai gantinya. Kita mulai dengan I
dan mengikuti aturan yang sama (alih-alih kita menerapkan aturan penghitungan angka pada karakter, jadi kita membaca IVX
sebagai one one, one five, one ten
ganti one four, one ten
atau dengan cara lain):
I "one"
II "one one"
III "two ones" = "II" + "I"
IIII "three ones" = "III" + "I"
IVI "four ones" = "IV" + "I"
IIIVII "one one, one five, one one"
IIIIIVIII "three ones, one five, two ones" = ("III" + "I") + ("I" + "V") + ("II" + "I")
Diberikan bilangan bulat positif N
, baik:
- Keluarkan
N
angka pertama dari urutan ini (juga pemisah yang masuk akal, juga["I", "II", "III", ...]
- Keluarkan
N
istilah th dari urutan ini (mungkin diindeks 0).
Ingatlah untuk membuat kode Anda sesingkat mungkin, karena ini adalah tantangan kode-golf !
EDIT: Saya percaya bahwa selalu ada satu cara standar / disukai untuk mengekspresikan bilangan bulat sebagai angka romawi, (seperti 95
-> XCV
alih-alih VC
). Beberapa konverter angka Romawi yang saya temukan online menguatkan pendapat saya. Jika ragu, gunakan konverter online , karena mendaftar semua kasus tepi yang mungkin dan aturan khusus penulisan angka Romawi bukanlah titik tantangan ini.
EDIT2: @PeterTaylor dan @GregMartin menunjukkan bahwa hanya nomor kurang atau sama untuk 5
muncul secara berurutan, sehingga Anda tidak perlu khawatir tentang ambiguitas angka Romawi (nomor 1
- 8
adalah I
, II
, III
, IV
, V
, VI
, VII
, dan VIII
)
4
/ IV
/ IIII
? Atau 95
/ XCV
/ VC
? Mungkin tidak selalu ada cara unik untuk mengekspresikan bilangan bulat, tapi saya cukup yakin selalu ada yang lebih disukai (standar) - koreksi saya jika saya salah.