บางครั้งฉันมีรายการเมทริกซ์คงที่ในรหัสของฉัน:
[ [[1, 0],
[0, 1]],
[[1, 0],
[0,-1]],
[[0, 1],
[1, 0]],
[[0,-1],
[1, 0]] ]
นั่นคือการใช้อสังหาริมทรัพย์ที่น่ากลัวบนหน้าจอ ฉันอยากจะเขียนพวกเขามากถัดจากกัน:
[ [[1, 0], [[1, 0], [[0, 1], [[0,-1],
[0, 1]], [0,-1]], [1, 0]], [1, 0]] ]
คุณจะพบว่านี่ยังคงเป็นรายการที่ซ้อนกันที่ถูกต้อง syntactically มันเป็นเพียงไม่เป็นรูปสี่เหลี่ยมผืนผ้าอีกต่อไปและมีโครงสร้างที่แตกต่างกันมาก (โดยเฉพาะมันจะลึกลงทุกครั้งที่ฉันเพิ่มเมทริกซ์ที่มีขนาดใหญ่กว่า 1x1) อย่างไรก็ตามยังคงสามารถสร้างรายการเมทริกซ์เริ่มต้นจากรายการใหม่นี้ได้
เพื่อที่ฉันจะสามารถใช้ไวยากรณ์นี้ได้ในอนาคตฉันต้องการให้คุณเขียนโค้ดที่แปลงอาร์เรย์ที่เขียนในการจัดเรียงแนวนอนไปยังรายการของเมทริกซ์ที่พวกเขาเป็นตัวแทน
เพื่อให้แน่ใจว่าคำตอบไม่ได้ทำการจับคู่รูปแบบ 2 มิติบนเลย์เอาต์ในซอร์สโค้ดอินพุทจะได้รับเป็นเพียงแค่วัตถุอาร์เรย์หรือถ้าคุณใช้การแทนสตริงแล้วมันจะไม่มีช่องว่างใด ๆ ที่ระบุวิธี ตัวอักษรถูกเขียนในรหัส ดังนั้นคุณจะได้รับข้อมูลเช่นนี้:
[[[1, 0], [[1, 0], [[0, 1], [[0,-1], [0, 1]], [0,-1]], [1, 0]], [1, 0]]]
และผลลัพธ์ควรเป็นอาร์เรย์ต่อไปนี้หรือการแสดงสตริง (อีกครั้งไม่จำเป็นต้องมีโครงร่างเพิ่มเติม):
[[[1, 0], [0, 1]], [[1, 0], [0,-1]], [[0, 1], [1, 0]], [[0,-1], [1, 0]]]
นี่เป็นส่วนแรกและง่ายกว่าของการท้าทายสองส่วน ในอันนี้คุณอาจสันนิษฐานว่าเมทริกซ์ทั้งหมดเป็นสี่เหลี่ยมจัตุรัสและมีขนาดเท่ากัน ในส่วนที่สองเราจะผ่อนคลายสมมติฐานเหล่านี้
กฎระเบียบ
อินพุตจะเป็นรายการแบบซ้อนหรือการแสดงสตริงแบบบัญญัติ (ในภาษาที่คุณเลือก) และคุณควรแสดงผลลัพธ์ในรูปแบบเดียวกัน ผลลัพธ์จะมีเมทริกซ์อย่างน้อยหนึ่งเมทริกซ์และเมทริกซ์อาจมีขนาดเล็กเท่า 1x1 เมทริกซ์จะมีจำนวนเต็ม (ลงนาม) เท่านั้นที่มีค่าสัมบูรณ์น้อยกว่า 128
คุณสามารถเขียนโปรแกรมหรือฟังก์ชั่นและใช้วิธีการมาตรฐานใด ๆ ในการรับอินพุตและจัดเตรียมเอาต์พุต
คุณอาจใช้ภาษาการเขียนโปรแกรมใด ๆแต่โปรดทราบว่าช่องโหว่เหล่านี้เป็นสิ่งต้องห้ามตามค่าเริ่มต้น
นี่คือรหัสกอล์ฟดังนั้นคำตอบที่สั้นที่สุดที่ถูกต้อง - วัดเป็นไบต์ - ชนะ
กรณีทดสอบ
แต่ละกรณีทดสอบมีก) เมทริกซ์รายการที่วางไว้ข้าง ๆ กันอย่างที่ควรจะเป็นในรหัส (นี่ไม่ใช่ข้อมูลของคุณ), b) รายการที่ไม่ได้จัดรูปแบบโดยไม่มีช่องว่างภายนอก ( นี่คืออินพุตของคุณ), c) ผลผลิตที่คาดหวัง
Pretty: [ [[0]] ]
Input: [[[0]]]
Output: [[[0]]]
Pretty: [ [[-1]], [[0]], [[1]] ]
Input: [[[-1]],[[0]],[[1]]]
Output: [[[-1]],[[0]],[[1]]]
Pretty: [ [[1, 0], [[1, 0], [[0, 1], [[0,-1],
[0, 1]], [0,-1]], [1, 0]], [1, 0]] ]
Input: [[[1,0],[[1,0],[[0,1],[[0,-1],[0,1]],[0,-1]],[1,0]],[1,0]]]
Output: [[[1,0],[0,1]],[[1,0],[0,-1]],[[0,1],[1,0]],[[0,-1],[1,0]]]
Pretty: [ [[1, 0, 0], [[ 127, 63, 31], [[1, 0, 0], [[0, 0, 0],
[0, 1, 0], [ 15, 0, -15], [0, 0, 1], [0, 0, 0],
[0, 0, 1]], [ -31, -63, -127]], [0, 1, 0]], [0, 0, 0]] ]
Input: [[[1,0,0],[[127,63,31],[[1,0,0],[[0,0,0],[0,1,0],[15,0,-15],[0,0,1],[0,0,0],[0,0,1]],[-31,-63,-127]],[0,1,0]],[0,0,0]]]
Output: [[[1,0,0],[0,1,0],[0,0,1]],[[127,63,31],[15,0,-15],[-31,-63,-127]],[[1,0,0],[0,0,1],[0,1,0]],[[0,0,0],[0,0,0],[0,0,0]]]
[([1, 0], [0, 1]), ([1, 0], [0, -1]), ([0, 1], [1, 0]), ([0, -1], [1, 0])]
การส่งออกที่ถูกต้องสำหรับ testcase ที่สาม? มันเป็นรายการผสมและ tuple
[([1,0], ([1, 0}, ...
และควรให้ข้อมูลเพิ่มเติมแก่คุณ