你的金字塔
我要您建造的金字塔完全由立方体组成。它有24层,从顶部开始的第 N 层包含以N×N正方形排列的N 2个立方体。金字塔看起来像这样:
要建造金字塔,您将需要大量的多维数据集。您将得到4900个立方体,它们以70 x 70的正方形排列,如下所示:
(好的,我承认正方形的图片完全没有必要。)
由于1 2 + 2 2 + 3 2 + ... + 24 2 = 70 2,因此您拥有正确数量的立方体来构建金字塔。您所要做的就是告诉我每个多维数据集应该放在哪里。
你的任务
您应该在正方形的立方体和金字塔的立方体之间选择任意双射。(如果您的回答说出您使用的是哪种4900,那就太好了。)
然后,编写执行以下操作的函数或程序:
- 给定一个立方体在70 x 70平方中的位置(作为一对坐标
(X,Y)
), - 输出其在金字塔中的位置(作为三坐标
(A,B,C)
)。
输入和输出坐标都可以是0索引或1索引。假设索引为1,则您的输入(X,Y)
将是一对1到70之间(A,B,C)
的整数。A
应该是从顶部开始计数的层(介于1和24之间),并且(B,C)
应该是该层中该立方体的坐标(介于1和之间A
)。
例如:
- 金字塔的顶部立方体有坐标
(1,1,1)
。 - 金字塔的底座的四个角上有坐标
(24,1,1)
,(24,1,24)
,(24,24,1)
,和(24,24,24)
。 - 如果决定将正方形的角放置在金字塔的角上,则在输入
(70,1)
时可以给出输出(24,24,1)
。
您可能会假设您只会获得有效的坐标(X,Y)
作为输入。正确性完全由以下规则决定:两个不同的有效输入应始终给出两个不同的有效输出。
这是代码高尔夫球:最短的代码获胜。