ดีเทอร์มีแนนต์ของเมทริกซ์ 2 คูณ 2
a b
c d
ad - bc
จะได้รับจาก
ด้วยเมทริกซ์ของตัวเลขที่มีขนาด 2 nคูณ 2 n , n ≥ 1 ส่งออกผลลัพธ์ที่ได้จากการคำนวณดีเทอร์มิแนนต์ของแต่ละบล็อกย่อย 2 คูณ 2 จนกว่าเราจะถึงตัวเลขเดียว
ตัวอย่างเช่นกำหนดอินพุต
3 1 4 1
5 9 2 6
5 3 5 8
9 7 9 3
หลังจากผ่านไปหนึ่งขั้นตอนเราจะได้รับ:
(3*9 - 1*5) (4*6 - 1*2) = 22 22
(5*7 - 3*9) (5*3 - 8*9) 8 -57
และวนซ้ำอีกครั้งเราจะได้รับ:
(22*-57 - 22*8) = -1430
-1430
ดังนั้นการส่งออกที่ควรจะเป็น
กฎระเบียบ
- องค์ประกอบของเมทริกซ์จะเป็นเลขจำนวนเต็มเดียวเสมอคือ 0 ถึง 9
- คุณสามารถรับข้อมูลในรูปแบบรายการหรือรูปแบบสตริงใด ๆ ก็ได้ตราบใดที่ยังไม่มีการประมวลผลข้อมูลล่วงหน้า เนื่องจากเมทริกซ์นั้นเป็นรูปสี่เหลี่ยมเสมอคุณอาจรับอินพุตเป็นรายการ 1D เดียวแทนรายการ 2D หากคุณต้องการ
- อินพุตสามารถผ่านฟังก์ชั่นอินพุต, STDIN, อาร์กิวเมนต์บรรทัดคำสั่งหรือทางเลือกอื่นที่ใกล้เคียงที่สุด
- เอาต์พุตควรเป็นเลขจำนวนเต็มเดียวสำหรับใช้กับเอาต์พุตเอาท์พุต STDOUT หรือตัวเลือกอื่นที่ใกล้เคียงที่สุด คุณไม่สามารถส่งออกจำนวนเต็มเดียวในรายการหรือเมทริกซ์
- คุณอาจใช้วิธีการดีเทอร์มิแนนต์และแมทริกซ์การจัดการหากภาษาของคุณรองรับ
- อัลกอริทึมของคุณต้องทำงานในทางทฤษฎีสำหรับการป้อนข้อมูลที่ถูกต้องใด ๆ
- ใช้กฎมาตรฐานของกอล์ฟ
กรณีทดสอบ
กรณีทดสอบต่อไปนี้จะได้รับเป็นรายการสไตล์ Python:
[[1,0],[0,1]] -> 1
[[1,9],[8,4]] -> -68
[[0,1,2,3],[4,5,6,7],[8,9,0,1],[2,3,4,5]] -> 40
[[3,1,4,1],[5,9,2,6],[5,3,5,8],[9,7,9,3]] -> -1430
[[9,0,0,9],[0,9,9,0],[9,0,9,0],[0,9,0,9]] -> 13122
[[1,0,0,0,0,0,0,0],[2,1,0,0,0,0,0,0],[3,2,1,0,0,0,0,0],[4,3,2,1,0,0,0,0],[5,4,3,2,1,0,0,0],[6,5,4,3,2,1,0,0],[7,6,5,4,3,2,1,0],[8,7,6,5,4,3,2,1]] -> 1
[[7,1,0,5,8,0,1,5],[9,9,6,6,1,2,4,8],[4,8,7,3,8,7,4,7],[4,6,1,9,7,0,1,7],[7,6,7,1,9,4,1,6],[8,0,0,8,5,5,9,9],[4,6,4,8,9,4,8,6],[9,0,8,7,6,2,1,5]] -> 2937504
[[1,2,3,4,5,6,7,8],[2,3,4,5,6,7,8,1],[3,4,5,6,7,8,1,2],[4,5,6,7,8,1,2,3],[5,6,7,8,1,2,3,4],[6,7,8,1,2,3,4,5],[7,8,1,2,3,4,5,6],[8,1,2,3,4,5,6,7]] -> -10549504
[[1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,0],[0,1,1,1,1,0,0,1,0,1,1,1,1,1,1,0],[1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,0],[0,1,1,1,1,0,0,0,0,1,1,1,1,1,0,1],[1,0,1,0,1,1,1,0,0,1,1,1,1,0,1,0],[0,0,1,1,1,0,1,1,1,1,1,1,1,0,0,0],[1,1,1,1,1,0,1,0,1,1,1,1,1,1,1,1],[1,1,0,1,1,1,1,1,1,1,1,1,0,1,0,1],[1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1],[0,1,1,1,1,1,1,1,1,0,0,1,0,1,0,1],[1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,0,1,1,0,1,1,1,1,1,0,0,1,1,0],[1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,0,1,0,0,1,0,1,0,1,1,1,1,1,0,1],[1,1,1,1,1,1,1,1,1,0,0,1,1,1,0,1]] -> -8
(ขอบคุณ @ MartinBüttnerสำหรับความช่วยเหลือเกี่ยวกับความท้าทายนี้)
[1,0,1,0;1,1,1,1;1,1,1,1;0,0,0,1]
พิจารณาเมทริกซ์ ดีเทอร์มีแนนต์เต็มของมันคือศูนย์เนื่องจากมันมีสองแถวเหมือนกัน อันนี้จึงเป็นเอกพจน์ (หมายถึงไม่กลับหัว) เมทริกซ์ 4 × 4 ดังนั้นจึงไม่นับ A055165 อย่างไรก็ตาม "recursive" 1*1-1*0==1
ปัจจัยที่กล่าวถึงที่นี่เป็น ในทิศทางที่ตรงข้ามเมทริกซ์[0,0,0,1;1,0,0,0;0,1,0,0;0,0,1,0]
มี "recursive" 0*0-0*0==0
ปัจจัย อย่างไรก็ตามดีเทอร์มิแนนต์ทั้งหมดต้องไม่ใช่ศูนย์เนื่องจากแถวของมันเป็นเพียงแถวของเมทริกซ์เอกลักษณ์ในลำดับอื่น และนับเป็น A055165