Créez une routine qui prend un tableau de blocs dans un système de base numérique et convertissez-les en un tableau de blocs dans un autre système de base numérique. Les systèmes from et to sont arbitraires et doivent être acceptés comme paramètre. Le tableau d'entrée peut être d'une longueur arbitraire (si vous utilisez un langage dans lequel les longueurs de tableau ne sont pas stockées avec le tableau, comme C, un paramètre de longueur doit être transmis à la fonction).
Voici comment cela devrait fonctionner:
fromArray = [1, 1]
fromBase = 256
toBase = 16
result = convertBase(fromArray, fromBase, toBase);
Qui devrait retourner [0, 1, 0, 1]
ou éventuellement [1, 0, 1]
(les 0
s en tête sont facultatifs car ils ne modifient pas la valeur de la réponse).
Voici quelques vecteurs de test:
Vecteur de test d'identité
fromArray = [1, 2, 3, 4] fromBase = 16 toBase = 16 result = [1, 2, 3, 4]
Vecteur de test trivial
fromArray = [1, 0] fromBase = 10 toBase = 100 result = [10]
Grand vecteur de test
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]
Vecteur de test vraiment grand
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]
Vecteur de base non pair
fromArray = [41, 42, 43] fromBase = 256 toBase = 36 result = [1, 21, 29, 22, 3]
Autres critères / règles:
Toutes les variables entières doivent tenir dans un entier signé 32 bits standard pour toutes les plages d'entrée saines.
Vous pouvez convertir en une représentation intermédiaire, tant que l'intermédiaire n'est rien de plus qu'un tableau d'entiers signés 32 bits.
Attendez-vous à gérer des bases de 2 à 256. Il n'est pas nécessaire de prendre en charge des bases plus élevées que cela (mais si vous le souhaitez, certainement).
Attendez-vous à gérer les tailles d'entrée et de sortie d' au moins jusqu'à 1 000 éléments. Une solution qui évolue à 2 ^ 32-1 éléments serait mieux, mais 1000 est très bien.
Il ne s'agit pas nécessairement d'avoir le code le plus court qui répondra à ces règles. Il s'agit d'avoir le code le plus propre et le plus élégant.
Maintenant, ce n'est pas vraiment trivial à faire, donc une réponse qui fonctionne presque pourrait être acceptée!