บทนำ
แน่นอนว่าเรามีความท้าทายต่อเนื่องกันมากมายดังนั้นนี่คืออีกความท้าทายหนึ่ง
ลำดับ Kimberling ( A007063 ) มีดังต่อไปนี้:
1, 3, 5, 4, 10, 7, 15, 8, 20, 9, 18, 24, 31, 14, 28, 22, ...
สิ่งนี้ผลิตโดยการสับซ้ำซ้ำ:
[1] 2 3 4 5 6 7 8
1
ในระยะแรกของลำดับคือ หลังจากนั้นเราจะสลับลำดับจนกว่าจะมีการใช้ข้อกำหนดทั้งหมดทางด้านซ้าย right - left - right - left - ...
สับมีแบบแผน เนื่องจากไม่มีข้อกำหนดทางด้านซ้ายของ1
จึงไม่มีการสับ เราได้รับดังต่อไปนี้:
2 [3] 4 5 6 7 8 9
เมื่อวันที่ฉันTHย้ำเราทิ้งฉันTHรายการและใส่ที่อยู่ในลำดับของเรา นี่คือการวนซ้ำครั้งที่ 2ดังนั้นเราจึงทิ้งรายการที่2 ลำดับจะกลายเป็น: 1, 3
. สำหรับการทำซ้ำครั้งต่อไปเราจะสุ่มการทำซ้ำปัจจุบันด้วยรูปแบบด้านบน เราจะใช้รายการที่ไม่ได้ใช้งานเป็นครั้งแรกที่ทางขวาของฉันTHรายการ 4
นี้เกิดขึ้นเป็น เราจะผนวกสิ่งนี้กับการทำซ้ำใหม่ของเรา:
4
ตอนนี้เรากำลังจะใช้รายการที่ไม่ได้ใช้งานเป็นครั้งแรกที่ด้านซ้ายของฉันTHรายการ 2
นี่คือ เราจะผนวกสิ่งนี้กับการทำซ้ำใหม่ของเรา:
4 2
เนื่องจากมีรายการที่ทิ้งไว้ที่ด้านซ้ายของฉันTHรายการที่เราเพิ่งจะผนวกส่วนที่เหลือของลำดับเพื่อย้ำใหม่:
4 2 [5] 6 7 8 9 10 11 ...
นี้เป็นของเรา3ซ้ำดังนั้นเราจะทิ้ง35
รายการซึ่งเป็น นี่คือรายการที่สามในลำดับของเรา:
1, 3, 5
หากต้องการรับการวนซ้ำครั้งถัดไปเพียงทำซ้ำกระบวนการ ฉันได้ทำ gif ถ้ายังไม่ชัดเจน:
gif ใช้เวลานานกว่าการเขียนโพสต์จริง
งาน
- ให้เป็นจำนวนเต็มที่ไม่ใช่เชิงลบnส่งออกคำแรกnของลำดับ
- คุณอาจมีฟังก์ชั่นหรือโปรแกรม
- นี่คือโค้ดกอล์ฟดังนั้นการส่งที่มีจำนวนไบต์น้อยที่สุดจะชนะ!
กรณีทดสอบ:
Input: 4
Output: 1, 3, 5, 4
Input: 8
Output: 1, 3, 5, 4, 10, 7, 15, 8
Input: 15
Output: 1, 3, 5, 4, 10, 7, 15, 8, 20, 9, 18, 24, 31, 14, 28
หมายเหตุ:เครื่องหมายจุลภาคในเอาต์พุตไม่จำเป็น ตัวอย่างเช่นคุณอาจใช้การขึ้นบรรทัดใหม่หรือส่งออกรายการ ฯลฯ