Los Cheela (del libro Dragon's Egg de Robert L. Forward) son criaturas que viven en la superficie de una estrella de neutrones. Su cuerpo es plano y circular con doce ojos en el perímetro, por lo que naturalmente usan un sistema de numeración de base 12.
Entre los Cheela, el cuidado de las crías y la educación de los jóvenes son tareas que llevan a cabo los Ancianos. Dado que los jóvenes Cheela necesitan que se les enseñe a multiplicar, los Antiguos podrían usar una tabla de multiplicar.
Su tarea es producir una tabla de multiplicación 12
x 12
en base 12
, como la siguiente. Las letras mayúsculas A
y B
se utilizan para los dígitos correspondientes a decimales 10
y 11
respectivamente.
1 2 3 4 5 6 7 8 9 A B 10
2 4 6 8 A 10 12 14 16 18 1A 20
3 6 9 10 13 16 19 20 23 26 29 30
4 8 10 14 18 20 24 28 30 34 38 40
5 A 13 18 21 26 2B 34 39 42 47 50
6 10 16 20 26 30 36 40 46 50 56 60
7 12 19 24 2B 36 41 48 53 5A 65 70
8 14 20 28 34 40 48 54 60 68 74 80
9 16 23 30 39 46 53 60 69 76 83 90
A 18 26 34 42 50 5A 68 76 84 92 A0
B 1A 29 38 47 56 65 74 83 92 A1 B0
10 20 30 40 50 60 70 80 90 A0 B0 100
La salida debe imprimirse en la pantalla. El formato debe ser el siguiente:
- Los números deben estar alineados a la derecha dentro de cada columna.
- Se permiten espacios iniciales antes de la primera columna, espacios finales después de la última columna o una nueva línea posterior después de la última fila.
La separación entre columnas puede ser un espacio (como se muestra arriba) o más de un espacio, pero el número de espacios debe ser consistente entre columnas. Para medir la separación de columnas, considere que los números que se muestran incluyen los espacios iniciales que pueden haber sido necesarios para cumplir con el requisito 1 (por lo que cada número ocupa tres caracteres, el primero de los cuales puede ser espacios). Por ejemplo, la tabla con separación de dos espacios sería la siguiente:
1 2 3 4 5 6 7 8 9 A B 10 2 4 6 8 A 10 12 14 16 18 1A 20 3 6 9 10 13 16 19 20 23 26 29 30 4 8 10 14 18 20 24 28 30 34 38 40 5 A 13 18 21 26 2B 34 39 42 47 50 6 10 16 20 26 30 36 40 46 50 56 60 7 12 19 24 2B 36 41 48 53 5A 65 70 8 14 20 28 34 40 48 54 60 68 74 80 9 16 23 30 39 46 53 60 69 76 83 90 A 18 26 34 42 50 5A 68 76 84 92 A0 B 1A 29 38 47 56 65 74 83 92 A1 B0 10 20 30 40 50 60 70 80 90 A0 B0 100
El almacenamiento de la computadora en una estrella de neutrones es realmente costoso, por lo que su código debe usar la menor cantidad de bytes posible.
Reto extendido y bonificación
Idealmente, su código debería reutilizarse en otras partes del universo, donde otros sistemas de numeración pueden estar en uso. Con ese fin, el desafío se extiende opcionalmente de la siguiente manera: su código acepta un número N
como entrada y genera una tabla de multiplicación N
x N
en la base N
, con el formato anterior.
La entrada puede ser desde el teclado o como un argumento de función. El programa o función deben trabajar para 2
≤ N
≤ 36
, utilizando como dígitos los primeros N
caracteres de la secuencia 0
, 1
, ..., 9
, A
, B
, ..., Z
(letras mayúsculas)
Este desafío extendido es opcional. Si sigue esta ruta, obtenga un 20% de descuento en su recuento de bytes (no es necesario redondear a un número entero).
Because they have twelve eyes, they naturally use a base-12 numbering system.
Pues naturalmente. Es por eso que usamos binario, después de todo ... ;-)