Pertimbangkan proses berikut:
Ambil beberapa bilangan bulat non-negatif N.
misal N =
571
Ekspresikan dalam biner tanpa nol terkemuka. (Nol itu sendiri adalah satu-satunya pengecualian, menjadi
0
.)misalnya
571
=1000111011
dalam binerPecah berturut-turut satu dan nol dalam representasi biner ini.
misalnya
1000111011
→1
,000
,111
,0
,11
Sortir proses dari yang terpanjang hingga terpendek.
misalnya
1
,000
,111
,0
,11
→000
,111
,11
,1
,0
Timpa semua digit di setiap jalankan dengan
1
's dan0
' s, selalu dimulai dengan1
's.misalnya
000
,111
,11
,1
,0
→111
,000
,11
,0
,1
Menggabungkan hasilnya untuk mendapatkan nomor biner baru.
misalnya
111
,000
,11
,0
,1
→1110001101
=909
dalam 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 571
output 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
.BQ
alih-alihjQ2
, yang berarti Anda bisa kehilangan ruang antara8
dan sebelumnya2
.