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