I Cheela (dal libro Dragon's Egg di Robert L. Forward) sono creature che vivono sulla superficie di una stella di neutroni. Il loro corpo è piatto e circolare con dodici occhi sul perimetro, quindi usano naturalmente un sistema di numerazione base-12.
Tra i Cheela, la cura dei cuccioli e l'educazione dei giovani sono compiti svolti dagli Antichi. Poiché alla giovane Cheela deve essere insegnato come moltiplicare, gli Antichi potrebbero usare una tabella di moltiplicazione.
Il tuo compito è produrre una tabella di moltiplicazione 12
x 12
in base 12
, come il seguente. Lettere maiuscole A
e B
vengono utilizzate per le cifre corrispondenti al decimale 10
e 11
rispettivamente.
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
L'output deve essere stampato sullo schermo. Il formato dovrebbe essere il seguente:
- I numeri devono essere allineati a destra all'interno di ogni colonna.
- Sono consentiti spazi iniziali prima della prima colonna, spazi finali dopo l'ultima colonna o una nuova riga finale dopo l'ultima riga.
La separazione tra le colonne può essere uno spazio (come mostrato sopra) o più di uno spazio, ma il numero di spazi deve essere coerente tra le colonne. Per misurare la separazione delle colonne, considerare che i numeri visualizzati includono tutti gli spazi iniziali che potrebbero essere stati necessari per soddisfare il requisito 1 (quindi ogni numero occupa tre caratteri, il primo dei quali può essere spazi). Ad esempio, la tabella con separazione di due spazi sarebbe la seguente:
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 memoria del computer su una stella di neutroni è molto costosa, quindi il tuo codice dovrebbe usare il minor numero di byte possibile.
Sfida estesa e bonus
Idealmente, il codice dovrebbe essere riutilizzato in altre parti dell'universo, dove potrebbero essere in uso altri sistemi di numerazione. A tal fine, la sfida è facoltativamente estesa come segue: Il codice accetta un numero N
come input e genera una tabella di moltiplicazione N
x N
in base N
, con il formato sopra.
L'input può provenire dalla tastiera o come argomento di funzione. Il programma o funzione dovrebbe funzionare per 2
≤ N
≤ 36
, utilizzando come cifre i primi N
caratteri della sequenza 0
, 1
, ..., 9
, A
, B
, ..., Z
(maiuscolo lettere)
Questa sfida estesa è facoltativa. Se segui questo percorso, risparmia il 20% sul conteggio dei byte (non è necessario arrotondare a un numero intero).
Because they have twelve eyes, they naturally use a base-12 numbering system.
Beh, naturalmente. Ecco perché usiamo il binario, dopo tutto ... ;-)