พิจารณากระบวนการต่อไปนี้:
รับจำนวนเต็ม 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 ที่เกี่ยวข้อง อินพุตและเอาต์พุตของคุณควรเป็นทศนิยม
เช่นถ้าใส่เป็นผลผลิตที่ควรจะเป็น571
909
รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ
สำหรับการอ้างอิงต่อไปนี้เป็นคำในลำดับจาก 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
ซึ่งหมายความว่าคุณจะสูญเสียพื้นที่ระหว่างและก่อนหน้านี้8
2