Latar Belakang
Kebanyakan orang di sini harus terbiasa dengan beberapa sistem dasar: desimal, biner, heksadesimal, oktal. Misalnya dalam sistem heksadesimal, angka 12345 16 akan mewakili
1*16^4 + 2*16^3 + 3*16^2 + 4*16^1 + 5*16^0
Perhatikan bahwa kami biasanya tidak mengharapkan basis (di sini, 16
) berubah dari digit ke digit.
Generalisasi dari sistem posisi yang biasa ini memungkinkan Anda untuk menggunakan basis numerik yang berbeda untuk setiap digit. Misalnya jika kita berganti-ganti antara sistem desimal dan biner (dimulai dengan basis 10 dalam digit paling signifikan), angka 190315 [2,10] akan mewakili
1*10*2*10*2*10 + 9*2*10*2*10 + 0*10*2*10 + 3*2*10 + 1*10 + 5 = 7675
Kami menyatakan basis ini sebagai [2,10]
. Basis paling kanan sesuai dengan digit paling tidak signifikan. Kemudian Anda pergi melalui basis (ke kiri) saat Anda pergi melalui digit (ke kiri), membungkus jika ada lebih banyak digit daripada basis.
Untuk bacaan lebih lanjut, lihat Wikipedia .
Tantangan
Tulis program atau fungsi yang, dengan memberikan daftar D
basis input I
dan basis output O
, mengubah bilangan bulat yang diwakili oleh D
dari basis I
ke basis O
. Anda dapat mengambil input melalui STDIN, ARGV atau argumen fungsi dan mengembalikan hasilnya atau mencetaknya ke STDOUT.
Anda mungkin berasumsi:
- bahwa angka-angka
I
danO
semua lebih besar dari1
. - yang
I
danO
non-kosong. - bahwa nomor input valid dalam basis yang diberikan (yaitu, tidak ada digit lebih besar dari basisnya).
D
bisa kosong (mewakili 0
) atau bisa memimpin nol. Output Anda tidak boleh mengandung nol terkemuka. Secara khusus, hasil yang mewakili 0
harus dikembalikan sebagai daftar kosong.
Anda tidak boleh menggunakan fungsi konversi basis bawaan atau pihak ketiga.
Ini kode golf, jawaban terpendek (dalam byte) menang.
Contohnya
D I O Result
[1,0,0] [10] [2] [1,1,0,0,1,0,0]
[1,0,0] [2] [10] [4]
[1,9,0,3,1,5] [2,10] [10] [7,6,7,5]
[1,9,0,3,1,5] [2,10] [4,3,2] [2,0,1,1,0,1,3,0,1]
[52,0,0,0,0] [100,7,24,60,60] [10] [3,1,4,4,9,6,0,0]
[0,2,10] [2,4,8,16] [42] [1,0]
[] [123,456] [13] []
[0,0] [123,456] [13] []
[]
jika inputnya[0]