Creare una routine che accetta una matrice di blocchi in un sistema base numerico e convertirli in una matrice di blocchi in un altro sistema base numerico. Entrambi i sistemi from e to sono arbitrari e devono essere accettati come parametro. La matrice di input può avere una lunghezza arbitraria (se si utilizza una lingua in cui le lunghezze della matrice non sono memorizzate con la matrice, come C, un parametro di lunghezza deve essere passato alla funzione).
Ecco come dovrebbe funzionare:
fromArray = [1, 1]
fromBase = 256
toBase = 16
result = convertBase(fromArray, fromBase, toBase);
Che dovrebbe restituire [0, 1, 0, 1]
o eventualmente [1, 0, 1]
(i segni 0
iniziali sono facoltativi poiché non modificano il valore della risposta).
Ecco alcuni vettori di test:
Test d'identità vettoriale
fromArray = [1, 2, 3, 4] fromBase = 16 toBase = 16 result = [1, 2, 3, 4]
Trivial Test Vector
fromArray = [1, 0] fromBase = 10 toBase = 100 result = [10]
Grande prova vettoriale
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]
Test davvero grande vettore
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]
Vettore di base non uniforme
fromArray = [41, 42, 43] fromBase = 256 toBase = 36 result = [1, 21, 29, 22, 3]
Altri criteri / regole:
Tutte le variabili intere devono rientrare in un intero con segno standard a 32 bit per tutti gli intervalli di input sani.
È possibile convertire in una rappresentazione intermedia, purché l'intermediario non sia altro che un array di numeri interi con segno a 32 bit.
Aspettatevi di gestire basi da 2 a 256. Non c'è bisogno di supportare basi più alte di così (ma se lo desiderate, sicuramente).
Aspettatevi di gestire dimensioni di input e output almeno fino a 1000 elementi. Una soluzione che si ridimensiona a 2 ^ 32-1 elementi sarebbe meglio, ma 1000 va bene.
Non si tratta necessariamente di avere il codice più breve che soddisfi queste regole. Si tratta di avere il codice più pulito ed elegante.
Ora, questo non è esattamente banale da fare, quindi una risposta che quasi funziona potrebbe essere accettata!