Sua pirâmide
A pirâmide que quero que você construa é feita inteiramente de cubos. Possui 24 camadas, e a N a ésima camada da parte superior contém cubos de N 2 organizados em um quadrado N por N. A pirâmide é assim:
Para construir a pirâmide, você precisará de um suprimento de cubos. Você recebe 4900 cubos dispostos em um quadrado de 70 por 70, assim:
(Ok, admito que a imagem da praça é totalmente desnecessária.)
Como 1 2 + 2 2 + 3 2 + ... + 24 2 = 70 2 , você tem exatamente o número certo de cubos para construir a pirâmide. Tudo o que você precisa fazer é me dizer onde cada cubo deve ir.
Sua tarefa
Você deve escolher uma joia arbitrária entre os cubos no quadrado e os cubos na pirâmide. (Seria bom se a sua resposta dissesse qual das 4900 diferentes bijeções que você está usando.)
Em seguida, escreva uma função ou programa que faça o seguinte:
- Dada a localização de um cubo no quadrado 70 por 70 (como um par de coordenadas
(X,Y)
), - Saída sua localização na pirâmide (como um triplo de coordenadas
(A,B,C)
).
As coordenadas de entrada e saída podem ser indexadas em 0 ou 1. Supondo que seja indexado 1, sua entrada (X,Y)
será um par de números inteiros entre 1 e 70. Sua saída (A,B,C)
será um triplo de números inteiros; A
deve ser a camada contando da parte superior (entre 1 e 24) e (B,C)
as coordenadas desse cubo dentro dessa camada (entre 1 e A
).
Por exemplo:
- o cubo superior da pirâmide tem coordenadas
(1,1,1)
. - Os quatro cantos da base da pirâmide têm coordenadas
(24,1,1)
,(24,1,24)
,(24,24,1)
, e(24,24,24)
. - Se você decidir colocar os cantos do quadrado nos cantos da pirâmide, na entrada
(70,1)
você poderá fornecer a saída(24,24,1)
.
Você pode supor que você receberá apenas coordenadas válidas (X,Y)
como entrada. A correção é inteiramente determinada pela seguinte regra: duas entradas válidas diferentes sempre devem fornecer duas entradas válidas diferentes.
Este é o código-golfe : o código mais curto vence.