的二进制正方形对角线序列构造如下:
- 取正自然数的序列:
1,2,3,4,5,6,6,7,8,9,10,11,12,13,14,15,16,17,...
将每个数字转换为二进制:
1,10,11,100,101,110,111,1000,1001,1010,1011,1100,1101,1110,1111,10000,10001,...
将它们串联:
11011100101110111100010011010101111001101111011111000010001 ...
从开始
n=1
,生成边长增加的正方形,并用n
上述序列的元素从左到右,从上到下填充:1个
1 0 1 1
1 0 0 1 0 1 1 1 0
1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1
0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 1 0 0 0 0 1
...
取每个正方形的对角线(左上至右下):
1,11,100,1011,00111,...
转换为十进制(忽略前导零):
1、3、4、11、7 ...
任务
编写以下列方式之一输出序列的程序或函数:
- 无限返回或打印序列。
- 给定input
i
,返回或打印i
序列的第一个元素。 - 给定input
i
,返回或打印i
序列的第th个元素(索引为0或1)。
请在您的答案中说明选择的输出格式。
这是代码高尔夫球,每种语言中最短的答案将获胜。
测试用例
以下是序列的前50个元素:
1,3,4,11,7,29,56,141,343,853,321,3558,8176,3401,21845,17129,55518,134717,151988,998642,1478099,391518,7798320,8530050,21809025,61485963,66846232,54326455,221064493,256373253,547755170,4294967295,1875876391,2618012644,24710258456,6922045286,132952028155,217801183183,476428761596,51990767390,687373028085,1216614609441,7677215985062,15384530216172,22714614479340,15976997237789,0,256145539974868,532024704777005,601357273478135
3m
为n
吗?