Rozważ następujący proces:
Weź nieujemną liczbę całkowitą N.
np. N =
571
Wyrażaj to w postaci binarnej bez zer wiodących. (Samo zero jest jedynym wyjątkiem, który się staje
0
.)np.
571
=1000111011
binarnieRozbij kolejne ciągi zer i jedynek w tej reprezentacji binarnej.
np
1000111011
→1
,000
,111
,0
,11
Sortuj przebiegi od najdłuższego do najkrótszego.
np
1
,000
,111
,0
,11
→000
,111
,11
,1
,0
Nadpisuj wszystkie cyfry w każdym przebiegu naprzemiennymi znakami
1
„i0
”, zawsze zaczynając od1
„s”.np
000
,111
,11
,1
,0
→111
,000
,11
,0
,1
Połącz wynik, aby uzyskać nową liczbę binarną.
np
111
,000
,11
,0
,1
→1110001101
=909
dziesiętnie
Kiedy kreślisz wartości wygenerowane przez ten proces, otrzymujesz całkiem czysty wykres:
I mam nadzieję, że jest oczywiste, dlaczego nazywam powstałą sekwencję sekwencją Skyline świątyni :
Wyzwanie
Napisz program lub funkcję, która przyjmuje nieujemną liczbę całkowitą N i drukuje lub zwraca odpowiedni numer porządkowy Temple Skyline. Dane wejściowe i wyjściowe powinny być w systemie dziesiętnym.
np. jeśli wejście jest 571
wyjściem powinno być 909
.
Najkrótszy kod w bajtach wygrywa.
Dla odniesienia, oto terminy w sekwencji od N = 0 do 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
zamiastjQ2
, co oznacza, że możesz stracić przestrzeń między8
poprzednim a poprzednim2
.