Rozważ następujący proces:
Weź nieujemną liczbę całkowitą N.
np. N =
571Wyrażaj to w postaci binarnej bez zer wiodących. (Samo zero jest jedynym wyjątkiem, który się staje
0.)np.
571=1000111011binarnieRozbij kolejne ciągi zer i jedynek w tej reprezentacji binarnej.
np
1000111011→1,000,111,0,11Sortuj przebiegi od najdłuższego do najkrótszego.
np
1,000,111,0,11→000,111,11,1,0Nadpisuj 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,1Połącz wynik, aby uzyskać nową liczbę binarną.
np
111,000,11,0,1→1110001101=909dziesię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 571wyjś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


.BQzamiastjQ2, co oznacza, że możesz stracić przestrzeń między8poprzednim a poprzednim2.