请考虑以下过程:
取一些非负整数N。
例如N =
571
以二进制形式表示,没有前导零。(零本身是唯一的例外,成为
0
。)例如
571
=1000111011
二进制在此二进制表示中,将连续的1和0分开。
例如
1000111011
→1
,000
,111
,0
,11
从最长到最短对运行进行排序。
例如
1
,000
,111
,0
,11
→000
,111
,11
,1
,0
用交替
1
的和替换每次运行中的所有数字0
,始终以开头1
。例如
000
,111
,11
,1
,0
→111
,000
,11
,0
,1
连接结果以获得新的二进制数。
例如
111
,000
,11
,0
,1
→1110001101
=909
十进制
当您绘制由此过程产生的值时,会得到一个漂亮的图形:
希望我将为什么将所得序列称为Temple Skyline序列是显而易见的:
挑战
编写一个使用非负整数N并打印或返回相应的Temple Skyline序列号的程序或函数。您的输入和输出都应为十进制。
例如,如果输入为571
输出,则应为909
。
以字节为单位的最短代码获胜。
作为参考,以下是从N = 0到20的顺序中的术语:
0 1
1 1
2 2
3 3
4 6
5 5
6 6
7 7
8 14
9 13
10 10
11 13
12 12
13 13
14 14
15 15
16 30
17 29
18 26
19 25
20 26
.BQ
替代的jQ2
,这意味着你可以失去之间的空间8
和前面2
。