Рассмотрим следующий процесс:
Возьмите некоторое неотрицательное целое число N.
например, N =
571Выразите это в двоичном виде без начальных нулей. (Сам ноль является единственным исключением, став
0.)например
571=1000111011в двоичномРазбейте последовательные серии единиц и нулей в этом двоичном представлении.
например ,
1000111011→1,000,111,0,11Сортировать пробеги от самого длинного к самому короткому.
например
1,000,111,0,11→000,111,11,1,0Перезаписывайте все цифры в каждом прогоне чередующимися буквами
1's0' и 's', всегда начиная с1's'.например
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.