Pertimbangkan proses berikut:
Ambil beberapa bilangan bulat non-negatif N.
misal N =
571Ekspresikan dalam biner tanpa nol terkemuka. (Nol itu sendiri adalah satu-satunya pengecualian, menjadi
0.)misalnya
571=1000111011dalam binerPecah berturut-turut satu dan nol dalam representasi biner ini.
misalnya
1000111011→1,000,111,0,11Sortir proses dari yang terpanjang hingga terpendek.
misalnya
1,000,111,0,11→000,111,11,1,0Timpa semua digit di setiap jalankan dengan
1's dan0' s, selalu dimulai dengan1's.misalnya
000,111,11,1,0→111,000,11,0,1Menggabungkan hasilnya untuk mendapatkan nomor biner baru.
misalnya
111,000,11,0,1→1110001101=909dalam desimal
Saat Anda memplot nilai yang dihasilkan oleh proses ini, Anda mendapatkan grafik yang cukup rapi:
Dan semoga jelas mengapa saya memanggil urutan yang dihasilkan urutan Temple Skyline :
Tantangan
Tulis program atau fungsi yang mengambil bilangan bulat non-negatif N dan mencetak atau mengembalikan nomor urut Temple Skyline yang sesuai. Input dan output Anda harus dalam desimal.
mis. Jika input adalah 571output seharusnya 909.
Kode terpendek dalam byte menang.
Untuk referensi, berikut adalah istilah dalam urutan dari N = 0 hingga 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


.BQalih-alihjQ2, yang berarti Anda bisa kehilangan ruang antara8dan sebelumnya2.