Cree una rutina que tome una matriz de bloques en un sistema base numérico y conviértala en una matriz de bloques en otro sistema base numérico. Los sistemas from y to son arbitrarios y deben aceptarse como parámetro. La matriz de entrada puede tener una longitud arbitraria (si usa un lenguaje donde las longitudes de la matriz no se almacenan con la matriz, como C, se debe pasar un parámetro de longitud a la función).
Así es como debería funcionar:
fromArray = [1, 1]
fromBase = 256
toBase = 16
result = convertBase(fromArray, fromBase, toBase);
Lo que debería devolver [0, 1, 0, 1]
o posiblemente [1, 0, 1]
(los 0
s iniciales son opcionales ya que no cambian el valor de la respuesta).
Aquí hay algunos vectores de prueba:
Vector de prueba de identidad
fromArray = [1, 2, 3, 4] fromBase = 16 toBase = 16 result = [1, 2, 3, 4]
Vector de prueba trivial
fromArray = [1, 0] fromBase = 10 toBase = 100 result = [10]
Vector de gran prueba
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]
Vector de prueba realmente grande
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]
Vector base no uniforme
fromArray = [41, 42, 43] fromBase = 256 toBase = 36 result = [1, 21, 29, 22, 3]
Otros criterios / reglas:
Todas las variables enteras deben caber dentro de un entero con signo estándar de 32 bits para todos los rangos de entrada sanos.
Puede convertir a una representación intermedia, siempre que el intermediario no sea más que una matriz de enteros con signo de 32 bits.
Espere manejar bases del 2 al 256. No hay necesidad de soportar bases más altas que eso (pero si lo desea, por supuesto).
Espere manejar tamaños de entrada y salida de al menos hasta 1000 elementos. Una solución que se escala a 2 ^ 32-1 elementos sería mejor, pero 1000 está bien.
No se trata necesariamente de tener el código más corto que cumpla con estas reglas. Se trata de tener el código más limpio y elegante.
Ahora, esto no es exactamente trivial, por lo que una respuesta que casi funciona podría ser aceptada.