Розглянемо наступний процес:
Візьміть деяке невід’ємне ціле число 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
.