พิจารณากระบวนการต่อไปนี้:
รับจำนวนเต็ม N ที่ไม่เป็นลบ
เช่น N =
571แสดงเป็นเลขฐานสองโดยไม่มีเลขศูนย์นำหน้า (ศูนย์ตัวเองเป็นข้อยกเว้นเพียงอย่างเดียวเท่านั้น
0)เช่น
571=1000111011ในไบนารีแยกการทำงานของเลขศูนย์และศูนย์ในการแทนเลขฐานสองนี้
เช่น
1000111011→1,000,111,0,11เรียงลำดับการวิ่งจากที่ยาวที่สุดไปที่สั้นที่สุด
เช่น
1,000,111,0,11→000,111,11,1,0เขียนทับตัวเลขทั้งหมดในการวิ่งแต่ละครั้งด้วยการสลับ
1และ0เริ่มต้นด้วย1เสมอเช่น
000,111,11,1,0→111,000,11,0,1ต่อผลลัพธ์เพื่อรับเลขฐานสองใหม่
เช่น
111,000,11,0,1→1110001101=909ในทศนิยม
เมื่อคุณพล็อตค่าที่สร้างโดยกระบวนการนี้คุณจะได้กราฟที่สวยงาม:
และหวังเป็นอย่างชัดเจนว่าเหตุใดฉันจึงเรียกลำดับผลลัพธ์ตามลำดับTemple Skyline :
ท้าทาย
เขียนโปรแกรมหรือฟังก์ชั่นที่รับจำนวนเต็ม N ที่ไม่เป็นลบและพิมพ์หรือส่งกลับหมายเลขลำดับ Temple Skyline ที่เกี่ยวข้อง อินพุตและเอาต์พุตของคุณควรเป็นทศนิยม
เช่นถ้าใส่เป็นผลผลิตที่ควรจะเป็น571909
รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ
สำหรับการอ้างอิงต่อไปนี้เป็นคำในลำดับจาก 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ซึ่งหมายความว่าคุณจะสูญเสียพื้นที่ระหว่างและก่อนหน้านี้82