Votre pyramide
La pyramide que je veux que vous construisiez est entièrement constituée de cubes. Il a 24 couches, et la N ème couche du haut contient N 2 cubes disposés dans un carré N par N. La pyramide ressemble à ceci:
Pour construire la pyramide, vous aurez besoin d'une réserve de cubes. On vous donne 4900 cubes disposés dans un carré de 70 par 70 qui ressemble à ceci:
(D'accord, j'avoue que l'image du carré est totalement inutile.)
Puisque 1 2 + 2 2 + 3 2 + ... + 24 2 = 70 2 , vous avez exactement le bon nombre de cubes pour construire la pyramide. Tout ce que vous avez à faire est de me dire où chaque cube doit aller.
Ta tâche
Vous devez choisir une bijection arbitraire entre les cubes du carré et les cubes de la pyramide. (Ce serait bien si votre réponse disait laquelle des 4900! Différentes bijections vous utilisez.)
Ensuite, écrivez une fonction ou un programme qui effectue les opérations suivantes:
- Étant donné l'emplacement d'un cube dans le carré 70 par 70 (sous la forme d'une paire de coordonnées
(X,Y)
), - Afficher son emplacement dans la pyramide (sous la forme d'un triple de coordonnées
(A,B,C)
).
Les coordonnées d'entrée et de sortie peuvent toutes être indexées 0 ou indexées 1. En supposant 1 indexé, votre entrée (X,Y)
sera une paire d'entiers entre 1 et 70. Votre sortie (A,B,C)
sera un triple d'entiers; A
devrait être le calque compté à partir du haut (entre 1 et 24) et (B,C)
devrait être les coordonnées de ce cube au sein de ce calque (entre 1 et A
).
Par exemple:
- le cube supérieur de la pyramide a des coordonnées
(1,1,1)
. - Les quatre coins de la base de la pyramide ont des coordonnées
(24,1,1)
,(24,1,24)
,(24,24,1)
et(24,24,24)
. - Si vous décidez de placer les coins du carré aux coins de la pyramide,
(70,1)
vous pouvez donner la sortie en entrée(24,24,1)
.
Vous pouvez supposer que vous ne recevrez que des coordonnées valides (X,Y)
en entrée. La correction est entièrement déterminée par la règle suivante: deux entrées valides différentes doivent toujours donner deux entrées valides différentes.
C'est le code-golf : le code le plus court l'emporte.