ปิรามิดของคุณ
ปิรามิดที่ฉันต้องการให้คุณสร้างทำจากลูกบาศก์ทั้งหมด มันมี 24 ชั้นและ N THชั้นจากด้านบนมี N 2ก้อนจัดใน N จาก N ตาราง ปิรามิดมีลักษณะดังนี้:
ในการสร้างปิรามิดคุณจะต้องมีลูกบาศก์ คุณจะได้รับ 4900 ลูกบาศก์จัดเรียงใน 70 โดย 70 ตารางที่มีลักษณะเช่นนี้:
(โอเคฉันยอมรับว่ารูปภาพของสแควร์ไม่จำเป็นเลย)
ตั้งแต่ 1 2 + 2 2 + 3 2 + ... + 24 2 = 70 2คุณมีจำนวนลูกบาศก์ที่ถูกต้องในการสร้างปิรามิด สิ่งที่คุณต้องทำคือบอกฉันว่าแต่ละก้อนควรไปที่ไหน
งานของคุณ
คุณควรเลือก bijection ตามอำเภอใจระหว่างลูกบาศก์ในจัตุรัสและก้อนในปิรามิด (มันคงจะดีถ้าคำตอบของคุณบอกว่าอันไหนของ 4900! bijections ที่คุณใช้อยู่)
จากนั้นเขียนฟังก์ชันหรือโปรแกรมที่ทำสิ่งต่อไปนี้:
- เมื่อกำหนดตำแหน่งของลูกบาศก์ใน 70 ด้วย 70 สี่เหลี่ยมจัตุรัส (เป็นคู่ของพิกัด
(X,Y)
) - เอาท์พุทตำแหน่งในปิรามิด (เป็นสามเท่าของพิกัด
(A,B,C)
)
พิกัดอินพุตและเอาต์พุตสามารถเป็น 0 หรือดัชนี 1 ดัชนี สมมติว่ามีการจัดทำดัชนี 1 อินพุทของคุณ(X,Y)
จะเป็นจำนวนเต็มคู่ระหว่าง 1 ถึง 70 เอาต์พุตของคุณ(A,B,C)
จะเป็นจำนวนเต็มสามเท่า A
ควรนับเลเยอร์จากด้านบน (ระหว่าง 1 ถึง 24) และ(B,C)
ควรเป็นพิกัดของคิวบ์นั้นภายในเลเยอร์นั้น (ระหว่าง 1 ถึงA
)
ตัวอย่างเช่น:
(1,1,1)
ก้อนด้านบนของปิรามิดมีพิกัด- มุมทั้งสี่ของฐานของพีระมิดมีพิกัด
(24,1,1)
,(24,1,24)
, และ(24,24,1)
(24,24,24)
- หากคุณตัดสินใจที่จะวางมุมของตารางที่มุมของปิรามิดแล้วกับการป้อนข้อมูลที่คุณอาจจะให้การส่งออก
(70,1)
(24,24,1)
คุณอาจคิดว่าคุณจะได้รับพิกัดที่ถูกต้อง(X,Y)
เป็นอินพุตเท่านั้น ความถูกต้องจะถูกกำหนดทั้งหมดโดยกฎต่อไปนี้: อินพุตที่ถูกต้องสองค่าที่ต่างกันควรให้สองค่าที่ต่างกัน
นี่คือcode-golf : รหัสที่สั้นที่สุดชนะ