La tua piramide
La piramide che voglio che tu costruisca è fatta interamente di cubi. Ha 24 strati e l' ennesimo strato dall'alto contiene N 2 cubi disposti in un quadrato N per N. La piramide si presenta così:
Per costruire la piramide, avrai bisogno di una scorta di cubi. Ti vengono dati 4900 cubi disposti in un quadrato 70 per 70 che assomiglia a questo:
(Va bene, ammetto che l'immagine della piazza è del tutto inutile.)
Poiché 1 2 + 2 2 + 3 2 + ... + 24 2 = 70 2 , hai esattamente il numero giusto di cubi per costruire la piramide. Tutto quello che devi fare è dirmi dove dovrebbe andare ogni cubo.
Il tuo compito
Dovresti scegliere una biiezione arbitraria tra i cubi nel quadrato e quelli nella piramide. (Sarebbe bello se la tua risposta dicesse quale delle 4900! Diverse biiezioni stai usando.)
Quindi, scrivere una funzione o un programma che procede come segue:
- Data la posizione di un cubo nel quadrato 70 per 70 (come una coppia di coordinate
(X,Y)
), - Stampa la sua posizione nella piramide (come tripla di coordinate
(A,B,C)
).
Le coordinate di input e output possono essere tutte indicizzate 0 o 1 indicizzate. Supponendo 1 indicizzato, l'input (X,Y)
sarà una coppia di numeri interi compresi tra 1 e 70. L'output (A,B,C)
sarà una tripla di numeri interi; A
dovrebbe essere il conteggio dei layer dall'alto (tra 1 e 24) e (B,C)
dovrebbero essere le coordinate di quel cubo all'interno di quel layer (tra 1 e A
).
Per esempio:
- il cubo superiore della piramide ha coordinate
(1,1,1)
. - I quattro angoli della base della piramide hanno coordinate
(24,1,1)
,(24,1,24)
,(24,24,1)
, e(24,24,24)
. - Se decidi di posizionare gli angoli del quadrato agli angoli della piramide, allora sull'input
(70,1)
potresti dare l'output(24,24,1)
.
Puoi presumere che ti verranno fornite solo coordinate valide (X,Y)
come input. La correttezza è interamente determinata dalla seguente regola: due diversi input validi dovrebbero sempre fornire due diversi output validi.
Questo è code-golf : vince il codice più corto.