Les Cheela (du livre Dragon's Egg de Robert L. Forward) sont des créatures qui vivent à la surface d'une étoile à neutrons. Leur corps est plat et circulaire avec douze yeux sur le périmètre, ils utilisent donc naturellement un système de numérotation en base 12.
Chez les Cheela, la garde des nouveau-nés et l'éducation des jeunes sont des tâches accomplies par les Anciens. Étant donné que les jeunes Cheela doivent apprendre à se multiplier, les Anciens pourraient utiliser une table de multiplication.
Votre tâche consiste à produire une table de multiplication 12
x 12
en base 12
, comme suit. Les lettres majuscules A
et B
sont utilisées pour les chiffres correspondant respectivement aux décimales 10
et 11
.
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 sortie doit être imprimée à l'écran. Le format doit être le suivant:
- Les nombres doivent être alignés à droite dans chaque colonne.
- Les espaces de début avant la première colonne, les espaces de fin après la dernière colonne ou une nouvelle ligne de fin après la dernière ligne sont autorisés.
La séparation entre les colonnes peut être un espace (comme indiqué ci-dessus) ou plusieurs espaces, mais le nombre d'espaces doit être cohérent entre les colonnes. Pour mesurer la séparation des colonnes, tenez compte du fait que les nombres affichés incluent tous les espaces en tête qui ont pu être nécessaires pour satisfaire à l'exigence 1 (chaque numéro occupe donc trois caractères, le premier pouvant être des espaces). Par exemple, la table avec séparation à deux espaces serait la suivante:
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
Le stockage informatique sur une étoile à neutrons est très cher, donc votre code doit utiliser le moins d'octets possible.
Défi étendu et bonus
Idéalement, votre code devrait être réutilisé dans d'autres parties de l'univers, où d'autres systèmes de numérotation peuvent être utilisés. À cette fin, le défi est éventuellement étendu comme suit: Votre code accepte un nombre N
en entrée et génère une table de multiplication N
x N
en base N
, avec le format ci-dessus.
L'entrée peut provenir du clavier ou d'un argument de fonction. Le programme ou la fonction devrait fonctionner pour 2
≤ N
≤ 36
, en utilisant comme chiffres les premiers N
caractères de la séquence 0
, 1
, ..., 9
, A
, B
, ..., Z
(majuscules des lettres)
Ce défi étendu est facultatif. Si vous suivez cette route, prenez 20% sur votre nombre d'octets (pas besoin d'arrondir à un nombre entier).
Because they have twelve eyes, they naturally use a base-12 numbering system.
Eh bien, naturellement. C'est pourquoi nous utilisons le binaire, après tout ... ;-)