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; Adovrebbe 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.

