กลุ่มไดฮีดรัลเป็นกลุ่มสมมาตรของจตุรัสนั่นคือการเคลื่อนไหวที่เปลี่ยนสแควร์เป็นตัวของมันเองผ่านการหมุนและการสะท้อนกลับ ประกอบด้วย 8 องค์ประกอบ: การหมุน 0, 90, 180 และ 270 องศาและการสะท้อนกลับในแนวนอนแนวตั้งและแกนแนวทแยงสองแกน
ภาพทั้งหมดมาจากหน้าน่ารักนี้โดย Larry Riddle
ความท้าทายนี้เกี่ยวกับการเขียนการเคลื่อนไหวเหล่านี้: เมื่อได้รับการเคลื่อนไหวสองครั้งแล้วให้ส่งออกท่าที่เทียบเท่ากับการทำสิ่งต่อไปนี้ ตัวอย่างเช่นการย้าย 7 ตามด้วยการย้าย 4 จะเหมือนกับการย้าย 5
โปรดทราบว่าการสลับคำสั่งเพื่อย้าย 4 จากนั้นย้าย 7 จะสร้างการย้าย 6 แทน
ผลสรุปได้ดังนี้; นี้เป็นตารางเคย์ลีของกลุ่ม 4 ตัวอย่างเช่นอินพุตควรผลิตออก5
ท้าทาย
เป้าหมายของคุณคือการใช้การดำเนินการนี้ในไม่กี่ไบต์เท่าที่จะทำได้ แต่นอกเหนือจากรหัสแล้วคุณยังเลือกป้ายกำกับที่แสดงการเคลื่อนไหว 1 ถึง 8 ป้ายกำกับต้องมี8 ตัวเลขที่แตกต่างกันตั้งแต่ 0 ถึง 255หรือ 8 หนึ่ง - อักขระไบต์จุดรหัสของพวกเขาแทน
รหัสของคุณจะได้รับป้ายกำกับสองรายการจาก 8 รายการที่คุณเลือกและต้องส่งออกป้ายกำกับที่สอดคล้องกับองค์ประกอบในกลุ่ม dihedral 4
ตัวอย่าง
สมมติว่าคุณเลือกอักขระ C, O, M, P, U, T, E, R สำหรับการเลื่อน 1 ถึง 8 ตามลำดับ จากนั้นรหัสของคุณควรใช้ตารางนี้
รับอินพุต E และ P คุณควรเอาต์พุต U อินพุตของคุณจะเป็นสองตัวอักษร C, O, M, P, U, T, E, R และเอาต์พุตของคุณควรเป็นหนึ่งในตัวอักษรเหล่านี้เสมอ
ตารางข้อความสำหรับการคัดลอก
1 2 3 4 5 6 7 8
2 3 4 1 8 7 5 6
3 4 1 2 6 5 8 7
4 1 2 3 7 8 6 5
5 7 6 8 1 3 2 4
6 8 5 7 3 1 4 2
7 6 8 5 4 2 1 3
8 5 7 6 2 4 3 1
Your choice of labels doesn't count against your code length.
คิดอย่างละเอียด? ฉันสามารถเข้ารหัสเมทริกซ์ในโค้ดของฉันและอ้างว่ามันไม่นับคะแนนของฉัน