14
神殿のスカイラインシーケンスを生成する
次のプロセスを検討してください。 負でない整数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 …