ท้าทาย:
กำหนดเมทริกซ์ NxN โดยที่และหนึ่งในแปด 'ตัวเลือกการพับ' ที่แตกต่างกันให้ส่งออกอาร์เรย์ / รายการแบบ 2D พร้อมค่าลบออก
ตัวเลือกการพับแปดแบบ ได้แก่ ซ้ายไปขวา จากขวาไปซ้าย; ด้านบนลงล่าง; ด้านล่างไปด้านบน; topleft ไป bottomright; รายนามสมาชิกเพื่อ bottomleft; bottomleft เพื่อรายนามสมาชิก; bottomright ไป topleft
ตัวอย่างทีละขั้นตอน:
อินพุตเมทริกซ์:
[[ 1, 3, 5, 7],
[ 0, 8, 6, 4],
[ 1, 1, 1, 1], (a'th row in the explanation below)
[ 1,25, 0,75]]
ด้วยตัวเลือกการพับจากบนลงล่างเราจะแสดงผลลัพธ์ดังนี้:
[[ 1,-7,-5,-3],
[ 0,22,-5,68]]
ทำไม? เราพับจากบนลงล่าง เนื่องจากขนาดเมทริกซ์ยังเท่ากันเราจึงไม่มีเลเยอร์กลางที่จะเก็บรักษาเหมือนเดิม 'แถววันจะถูกหักโดย ' แถว TH (จะได้รับ 'แถว TH สำหรับการฝึกอบรมมิติคี่); เพื่อให้กลายเป็น 'แถว TH แล้วจะถูกหักโดย ' แถว TH (จะได้รับ 'แถว TH สำหรับการฝึกอบรมมิติคี่); เพื่อให้กลายเป็น[1, 1, 1, 1]
[1-0, 1-8, 1-6, 1-4]
[1, -7, -5, -3]
[1, 25, 0, 75]
[1-1, 25-3, 0-5, 75-7]
[0, 22, -5, 68]
ด้วยตัวเลือกการพับจากขวาไปซ้ายแทน (ด้วยเมทริกซ์อินพุตเดียวกันด้านบน) เราจะแสดงผลลัพธ์ดังนี้:
[[-74, 2, 1, 7],
[ 0, 7, 6],
[-24, 1],
[ 1]]
ด้วยการลบการพับต่อไปนี้:
[[1-75, 3-1, 5-4, 7],
[ 0-0, 8-1, 6],
[1-25, 1],
[ 1]]
กฏท้าทาย:
- คุณสามารถใช้ตัวอักษรที่แตกต่างกันแปดตัว
[A-Za-z]
หรือตัวเลขที่ต่างกันในช่วงสำหรับตัวเลือกการพับ ตัวเลขหรืออาจเป็นตัวเลือกที่ใช้กันโดยทั่วไป แต่หากคุณต้องการใช้ตัวเลขต่าง ๆ ในช่วงสำหรับการคำนวณแบบสมาร์ทคุณสามารถทำได้ โปรดระบุตัวเลือกการพับที่คุณใช้ในคำตอบของคุณ - อินพุต - เมทริกซ์จะเป็นเมทริกซ์ NxN สแควร์เสมอดังนั้นคุณไม่ต้องจัดการเมทริกซ์ NxM ใด ๆ จะต้องมีอย่างน้อย 2 เสมอเนื่องจากเมทริกซ์ว่างเปล่าหรือ 1x1 ไม่สามารถพับได้
- อินพุตของเมทริกซ์จะมีตัวเลขที่ไม่เป็นลบเสมอในช่วง (ตัวเลขในเอาต์พุตจึงจะอยู่ในช่วง )
- ด้วยการพับ (ต่อต้าน -) ในแนวทแยงหรือการพับในแนวตั้ง / แนวนอนคี่กลาง 'เลเยอร์' จะไม่เปลี่ยนแปลง
- I / O ยืดหยุ่นได้ สามารถเป็นอาร์เรย์ 2 มิติ / รายการจำนวนเต็ม สามารถส่งคืนหรือพิมพ์เป็นสตริงที่คั่นด้วยช่องว่างและขึ้นบรรทัดใหม่; คุณสามารถปรับเปลี่ยนอินพุทเมทริกซ์และแทนที่ตัวเลขที่ควรจะหายไป
null
หรือตัวเลขที่อยู่นอก[-999, 999]
ช่วงเพื่อระบุว่ามันหายไป; ฯลฯ
กฎทั่วไป:
- นี่คือcode-golfดังนั้นคำตอบที่สั้นที่สุดในหน่วยไบต์ชนะ
อย่าปล่อยให้ภาษาโค้ดกอล์ฟกีดกันคุณจากการโพสต์คำตอบด้วยภาษาที่ไม่ได้เข้ารหัส พยายามหาคำตอบสั้น ๆ ที่เป็นไปได้สำหรับภาษาโปรแกรม 'ใด ๆ ' - กฎมาตรฐานใช้สำหรับคำตอบของคุณด้วยกฎ I / O เริ่มต้นดังนั้นคุณจึงได้รับอนุญาตให้ใช้ STDIN / STDOUT ฟังก์ชั่น / วิธีพร้อมพารามิเตอร์ที่เหมาะสมและประเภทผลตอบแทนโปรแกรมเต็มรูปแบบ การโทรของคุณ
- ช่องโหว่เริ่มต้นเป็นสิ่งต้องห้าม
- หากเป็นไปได้โปรดเพิ่มลิงก์พร้อมทดสอบรหัสของคุณ (เช่นTIO )
- นอกจากนี้ขอแนะนำให้เพิ่มคำอธิบายสำหรับคำตอบของคุณ
กรณีทดสอบ:
อินพุตเมทริกซ์ 1:
Input-matrix (for the following eight test cases):
[[ 1, 3, 5, 7],
[ 0, 8, 6, 4],
[ 1, 1, 1, 1],
[ 1,25, 0,75]]
Input-folding option: left-to-right
Output: [[2,6],[-2,4],[0,0],[-25,74]]
Input-folding option: right-to-left
Output: [[-6,-2],[-4,2],[0,0],[-74,25]]
Input-folding option: top-to-bottom
Output: [[1,-7,-5,-3],[0,22,-5,68]]
Input-folding option: bottom-to-top
Output: [[0,-22,5,-68],[-1,7,5,3]]
Input-folding option: topleft-to-bottomright
Output: [[7],[6,-1],[1,-7,-2],[1,24,0,74]]
Input-folding option: topright-to-bottomleft
Output: [[1],[-3,8],[-4,-5,1],[-6,21,-1,75]]
Input-folding option: bottomleft-to-topright
Output: [[1,3,4,6],[8,5,-21],[1,1],[75]]
Input-folding option: bottomright-to-topleft
Output: [[-74,2,1,7],[0,7,6],[-24,1],[1]]
อินพุตเมทริกซ์ 2:
Input-matrix (for the following eight test cases):
[[17, 4, 3],
[ 8, 1,11],
[11, 9, 7]]
Input-folding option: left-to-right
Output: [[4,-14],[1,3],[9,-4]]
Input-folding option: right-to-left
Output: [[14,4],[-3,1],[4,9]]
Input-folding option: top-to-bottom
Output: [[8,1,11],[-6,5,4]]
Input-folding option: bottom-to-top
Output: [[6,-5,-4],[8,1,11]]
Input-folding option: topleft-to-bottomright
Output: [[3],[1,7],[11,1,-10]]
Input-folding option: topright-to-bottomleft
Output: [[17],[4,1],[8,-2,7]]
Input-folding option: bottomleft-to-topright
Output: [[17,-4,-8],[1,2],[7]]
Input-folding option: bottomright-to-topleft
Output: [[10,-7,3],[-1,1],[11]]
A-Za-z
ใด ๆ หรือจำนวนเต็มใด ๆ ในช่วง[-999,999]
ดังนั้นคำสั่งซื้อไม่สำคัญ และขออภัย แต่คุณต้องส่งออกเท่าที่ถูกต้องขึ้นอยู่กับอินพุตดังนั้นการส่งออกทั้งแปดไม่ได้รับอนุญาต