จุดประสงค์ของการท้าทายนี้คือการอธิบายการเดินบนเครื่องบินที่ทิศทางของแต่ละขั้นตอนถูกกำหนดโดยความเป็นอันดับแรกของและความเท่าเทียมกันของการขยายตัวแบบไบนารี โดยเฉพาะอย่างยิ่ง
- ทิศทางเริ่มต้นคงที่แล้วพูดทิศเหนือ
- ทุกขั้นตอนมีความยาวเท่ากัน
- ทิศทางของขั้นตอนสามารถเป็นนอร์ทเวสต์, เซาท์หรือตะวันออกกลางและถูกกำหนดดังต่อไปนี้:
- หากไม่เป็นเอกสิทธิ์ทิศทางจะไม่เปลี่ยน
- หากเป็นจำนวนเฉพาะและการขยายตัวแบบไบนารีของมีจำนวนเท่ากันให้เลี้ยวขวา
- หากเป็นจำนวนเฉพาะและการขยายตัวแบบไบนารีของมีจำนวนคี่ให้เลี้ยวซ้าย
เป็นตัวอย่างที่ทำงานสมมติว่าทิศทางเริ่มต้นคือทิศเหนือ ขั้นตอนแรกคือ:
- ไม่สำคัญ ดังนั้นเราจึงเคลื่อนที่ไปหนึ่งก้าวในทิศทางปัจจุบันซึ่งก็คือทิศเหนือ
- เป็นจำนวนเฉพาะและส่วนขยายไบนารี
10
มีและจำนวนคี่ ดังนั้นเราเลี้ยวซ้ายและตอนนี้หันหน้าไปทางทิศตะวันตก เราเคลื่อนที่ไปหนึ่งก้าวในทิศทางนั้น - เป็นจำนวนเฉพาะและการขยายฐานสองของมัน
11
มีและจำนวนคู่ ดังนั้นเราเลี้ยวขวาและตอนนี้หันหน้าไปทางทิศเหนือ เราเคลื่อนที่ไปหนึ่งก้าวในทิศทางนั้น - ไม่สำคัญ ดังนั้นเราจึงเคลื่อนที่ไปหนึ่งก้าวในทิศทางปัจจุบันซึ่งก็คือทิศเหนือ
ความท้าทาย
การป้อนข้อมูล : บวกจำนวนเต็มN
เอาต์พุต : พล็อตของการเดิน -step ตามที่กำหนดไว้ด้านบน
กฎเพิ่มเติม
- ทิศทางเริ่มต้นที่สามารถเลือกได้อย่างอิสระ (ไม่จำเป็นต้องเหนือ) แต่ควรจะเหมือนกันทุกN
- กฎการเปลี่ยนอาจจะตรงข้ามกับที่อธิบายไว้ข้างต้นนั่นคือเลี้ยวขวาเท่าเทียมกันคี่และซ้ายสำหรับแม้แต่; แต่มันจะต้องมีเหมือนกันทุกN
- ผลลัพธ์จะต้องเป็นภาพกราฟิกของการเดิน ตัวอย่างเช่น
- การเดินสามารถวาดด้วยส่วนของเส้น
- จุดที่เยี่ยมชมสามารถแสดงด้วยเครื่องหมายเช่นจุด; มีหรือไม่มีการเชื่อมต่อส่วนของเส้น
- สามารถให้ภาพแรสเตอร์สองสีโดยมีหนึ่งสีที่ตรงกับจุดเข้าชมและอีกภาพหนึ่งสำหรับผู้ที่ไม่ได้เข้าชม
- ตาชั่งของแกนนอนและแนวตั้งไม่จำเป็นต้องเหมือนกัน นอกจากนี้ฉลากแกนและองค์ประกอบที่คล้ายกันก็เป็นทางเลือก ตราบใดที่สามารถมองเห็นการเดินได้ชัดเจน
- โปรดทราบว่าบางจุดมีการเยี่ยมชมมากกว่าหนึ่งครั้ง เนื้อเรื่องไม่ไวต่อสิ่งนี้ ตัวอย่างเช่นหากมีการแสดงส่วนของเส้นในพล็อตแต่ละส่วนของหน่วยจะแสดงเหมือนกันไม่ว่าจะผ่านเส้นทางไปกี่ครั้งก็ตาม
- รหัสควรใช้ได้กับ
N
ทรัพยากรที่ไม่ จำกัด เป็นที่ยอมรับได้หากในทางปฏิบัติมันล้มเหลวเป็นจำนวนมากN
เนื่องจากข้อ จำกัด ด้านเวลาหน่วยความจำหรือชนิดข้อมูล - อินพุตและเอาต์พุตยืดหยุ่นตามปกติ โดยเฉพาะอย่างยิ่งวิธีการมาตรฐานใด ๆสำหรับการส่งภาพสามารถนำมาใช้ได้
- รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ
กรณีทดสอบ
แปลงต่อไปนี้ใช้ทิศเหนือเป็นทิศทางเริ่มต้น แม้แต่พาริตี้เลี้ยวขวา และทางเดินนั้นมีส่วนของเส้นตรง
N = 7
:
N = 3000
:
N = 20000
:
N = 159000
:
N = 1200000
:
N = 11000000
:
[graphical-output]
อนุญาตเท่านั้นหรือไม่ มีเหตุผลใดที่ทำให้ไม่อนุญาตให้ใช้เอาต์พุต ASCII เช่นคำตอบ Charcoal ที่ฉันได้ลบไปแล้วตอนนี้?