กำหนดตัวเลข 0 ถึง 7 ถึง 8 จุดยอดของลูกบาศก์ในแบบที่คุณต้องการ ต้องกำหนดหมายเลขหนึ่งให้กับแต่ละจุดสุดยอดอย่างแน่นอน
ตัวอย่างเช่นจุดยอดของคุณอาจถูกกำหนดเช่นนี้:
3-----1
/| /|
4-----2 |
| | | |
| 5---|-0
|/ |/
6-----7
เขียนโปรแกรมที่ใช้จำนวนเต็มตั้งแต่ 0 ถึง 5 แต่ละหมายเลข 6 ตัวเหล่านี้เชื่อมโยงกับคิวบ์หน้าเดียวของคุณในแบบที่คุณต้องการ เมื่อป้อนหนึ่งในตัวเลขเหล่านี้จะต้องพิมพ์ตัวเลขสี่จุดยอดของใบหน้าที่เกี่ยวข้องไปยัง stdout ในรูปแบบตัวเลข 2 × 2 ใบหน้าจะต้องถูกมองตรงจากนอกลูกบาศก์ การหมุนใบหน้าทั้ง 4 ใบหน้านั้นถูกต้อง
ตัวอย่างเช่นถ้า 0 เกี่ยวข้องกับด้านหน้าของคิวบ์ตัวอย่างด้านบนนี่จะเป็นเอาต์พุตที่ถูกต้องสำหรับอินพุต0
:
42
67
ใบหน้าอาจถูกมองด้วยการหมุน 90 °ดังนั้นสิ่งเหล่านี้จึงถูกต้อง:
27
46
76
24
64
72
เอาต์พุตนี้ (และการหมุน) ไม่ถูกต้องเนื่องจากดูจากด้านที่ผิดของใบหน้า:
24
76
แนวคิดเดียวกันนี้ใช้กับใบหน้าอื่น ๆ ทั้งหมด เช่นหาก 1 เชื่อมโยงกับส่วนหลังส่วนหน้าข้อมูลขาเข้า1
อาจสร้างผลลัพธ์13[newline]05
(และ31[newline]50
อาจไม่ถูกต้อง)
ดังนั้นความท้าทายที่แท้จริงคือการเลือกหมายเลขจุดสุดยอดและการหมุนของคุณเพื่อให้การแปลอินพุตเป็นตัวเลข 4 จุดนั้นง่ายและสั้น
รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ Tiebreaker เป็นโพสต์ก่อนหน้า (ตัวนับไบต์ที่มีประโยชน์ )
หมายเหตุ
- คุณสามารถเขียนฟังก์ชั่นแทนโปรแกรมได้ ควรใช้จำนวนเต็มตั้งแต่ 0 ถึง 5 และพิมพ์หรือส่งกลับสตริงกริด 2 × 2 หลัก
- รับอินพุตจาก stdin, command line หรือ function arg คุณอาจจะถือว่าอินพุตนั้นถูกต้อง
- เอาต์พุตอาจมีทางเลือกขึ้นบรรทัดใหม่
- อย่าลืมบอกจุดสุดยอดและหมายเลขใบหน้าที่คุณเลือก