次のプロセスを検討してください。
負でない整数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
結果を連結して、新しい2進数を取得します。
例えば
111
、000
、11
、0
、1
→1110001101
=909
小数で
このプロセスによって生成された値をプロットすると、かなりきれいなグラフが得られます。
そして、結果のシーケンスをTemple Skylineシーケンスと呼んでいる理由が明らかになることを期待しています
チャレンジ
非負の整数Nを取り込んで、対応するTemple Skylineのシーケンス番号を出力または返すプログラムまたは関数を作成します。入力と出力は両方とも10進数でなければなりません。
入力された場合、たとえば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
ます。