Buat rutin yang mengambil array blok dalam satu sistem basis numerik, dan mengonversinya menjadi array blok dalam sistem basis numerik lain. Baik dari dan ke sistem bersifat arbitrer dan harus diterima sebagai parameter. Array input dapat berupa panjang arbitrer (Jika menggunakan bahasa di mana panjang array tidak disimpan dengan array, seperti C, parameter panjang harus diteruskan ke fungsi).
Begini cara kerjanya:
fromArray = [1, 1]
fromBase = 256
toBase = 16
result = convertBase(fromArray, fromBase, toBase);
Yang harus kembali [0, 1, 0, 1]atau mungkin [1, 0, 1]( 0s adalah opsional karena mereka tidak mengubah nilai jawabannya).
Berikut ini beberapa vektor uji:
Vektor Tes Identitas
fromArray = [1, 2, 3, 4] fromBase = 16 toBase = 16 result = [1, 2, 3, 4]Vektor Uji Sepele
fromArray = [1, 0] fromBase = 10 toBase = 100 result = [10]Vektor Uji Besar
fromArray = [41, 15, 156, 123, 254, 156, 141, 2, 24] fromBase = 256 toBase = 16 result = [2, 9, 0, 15, 9, 12, 7, 11, 15, 14, 9, 12, 8, 13, 0, 2, 1, 8]Vektor Uji Sangat Besar
fromArray = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] fromBase = 2 toBase = 10 result = [1, 2, 3, 7, 9, 4, 0, 0, 3, 9, 2, 8, 5, 3, 8, 0, 2, 7, 4, 8, 9, 9, 1, 2, 4, 2, 2, 3]Vektor Dasar Tanpa Titik
fromArray = [41, 42, 43] fromBase = 256 toBase = 36 result = [1, 21, 29, 22, 3]
Kriteria / aturan lain:
Semua variabel integer harus masuk dalam standar integer bertanda 32 bit untuk semua rentang input yang masuk akal.
Anda dapat mengonversi ke representasi perantara, selama perantara tersebut tidak lebih dari sebuah array bilangan bulat bertanda 32 bit.
Berharap untuk menangani basis dari 2 hingga 256. Tidak perlu mendukung basis yang lebih tinggi dari itu (tetapi jika Anda ingin, dengan segala cara).
Berharap untuk menangani ukuran input dan output setidaknya hingga 1000 elemen. Solusi yang menskala elemen 2 ^ 32-1 akan lebih baik, tetapi 1000 tidak masalah.
Ini tidak selalu tentang memiliki kode terpendek yang akan memenuhi aturan ini. Ini tentang memiliki kode terbersih dan paling elegan.
Sekarang, ini tidak sepele untuk dilakukan, jadi jawaban yang hampir berhasil mungkin diterima!