เขียนโปรแกรมหรือฟังก์ชั่นที่กำหนดจำนวนเต็มn
สร้างอาร์เรย์ที่มีn
ขนาดn
ความยาวโดยที่แต่ละองค์ประกอบเป็นตัวระบุพิกัดของมันเอง นั่นคือเริ่มต้นด้วยหนึ่งอาร์เรย์เติมมันมีn
อาร์เรย์ที่แต่ละคนมีอาร์เรย์มากขึ้นถึงความลึกของn
n-1
องค์ประกอบของอาร์เรย์ที่ลึกที่สุดคือพิกัดที่อธิบายว่าพวกเขาอยู่ที่ไหนในอาเรย์แบบเต็ม
ตัวอย่างบางส่วนในกรณีที่คำอธิบายของฉันสับสน
n = 1
["1"]
n = 2
[
["11", "12"],
["21", "22"]
]
n = 3
[
[
["111","112","113"],
["121","122","123"],
["131","132","133"]
],
[
["211","212","213"],
["221","222","223"],
["231","232","233"]
],
[
["311","312","313"],
["321","322","323"],
["331","332","333"]
]
]
นี่ "321" หมายถึงมันเป็นองค์ประกอบที่ 1 ขององค์ประกอบที่ 2 ของอาร์เรย์ที่ 3
กฎ:
- พิกัดและมิติ (
n
) สามารถเป็นดัชนี 0 หรือ 1 - คุณอาจถือว่า
n
เป็นตัวเลขหลักเดียวต่ำกว่า 10 สำหรับตัวเลือกการทำดัชนีทั้งสองเพื่อป้องกันไม่ให้ผลลัพธ์ที่ไม่ชัดเจน - IO ยืดหยุ่นได้
- โดยเฉพาะอย่างยิ่งพิกัดสามารถเป็นอาร์เรย์สตริง ฯลฯ ตราบใดที่พวกเขามีความชัดเจน "321" => [3,2,1]
- เอาต์พุตสามารถเป็นจำนวนเต็มในฐาน 10 โดยมีหรือไม่มีศูนย์นำหน้า
- พิกัดอาจอยู่ในลำดับกลับกันหากคุณต้องการตราบใดที่มันสอดคล้องกัน "321" => "123"
- ผลลัพธ์ไม่จำเป็นต้องเป็นโครงสร้างอาร์เรย์ในภาษาของคุณ ตราบใดที่มีเครื่องหมายที่แตกต่างกันชัดเจนสำหรับการเริ่มต้นของอาเรย์สิ้นสุดของอาเรย์และสำหรับการแยกองค์ประกอบ
- เอาต์พุตสำหรับ
n=1
สามารถเป็น 1 ได้ - หากผลลัพธ์ของคุณผิดปกติตรวจสอบให้แน่ใจเพื่ออธิบายรูปแบบ
- นี่คือรหัสกอล์ฟเพื่อให้ทางออกที่สั้นที่สุดในแต่ละภาษาชนะ!
data L a = L [L a] | E a
.
Int -> [String]
หรือInt -> [[String]]
อื่น ๆ ขึ้นอยู่กับสิ่งที่ป้อนเป็น