Penentu 2 2 matriks
a b
c d
diberikan oleh ad - bc
.
Diberikan matriks digit dengan dimensi 2 n oleh 2 n , n ≥ 1, output hasil yang diperoleh dengan menghitung secara rekursif penentu masing-masing 2 oleh 2 sub-blok sampai kita mencapai angka tunggal.
Misalnya diberi input
3 1 4 1
5 9 2 6
5 3 5 8
9 7 9 3
Setelah satu langkah, kami memperoleh:
(3*9 - 1*5) (4*6 - 1*2) = 22 22
(5*7 - 3*9) (5*3 - 8*9) 8 -57
Dan iterasi sekali lagi, kita dapatkan:
(22*-57 - 22*8) = -1430
Oleh karena itu, hasilnya harus -1430
.
Aturan
- Elemen-elemen dari matriks akan selalu berupa bilangan bulat satu digit, yaitu 0 hingga 9.
- Anda dapat mengambil input dalam format string atau daftar yang mudah, selama tidak ada pemrosesan data yang dilakukan. Karena matriks selalu persegi, Anda dapat mengambil input sebagai daftar 1D tunggal, bukan daftar 2D jika Anda mau.
- Input dapat melalui input fungsi, STDIN, argumen baris perintah atau alternatif terdekat.
- Output harus berupa bilangan bulat tunggal untuk berfungsi output, STDOUT atau alternatif terdekat. Anda tidak dapat mengeluarkan bilangan bulat tunggal dalam daftar atau matriks.
- Anda dapat menggunakan metode determinan dan manipulasi matriks bawaan jika bahasa Anda mendukungnya.
- Algoritme Anda harus bekerja secara teori untuk input yang valid.
- Aturan standar kode-golf berlaku.
Uji kasus
Kasing uji berikut diberikan sebagai daftar gaya-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
(Terima kasih kepada @ MartinBüttner untuk bantuan dengan tantangan ini)
[1,0,1,0;1,1,1,1;1,1,1,1;0,0,0,1]
. Penentu penuhnya adalah nol karena memiliki dua baris yang identik. Oleh karena itu, ini adalah matriks 4 × 4 singular (artinya tidak dapat dibalik), sehingga tidak dihitung oleh A055165. Namun, penentu "rekursif" yang dibahas di sini adalah 1*1-1*0==1
. Dalam arah yang berlawanan, matriks [0,0,0,1;1,0,0,0;0,1,0,0;0,0,1,0]
memiliki penentu "rekursif" 0*0-0*0==0
. Namun, penentu penuhnya harus non-nol karena barisnya hanya baris dari matriks identitas dalam urutan lain; dan itu dihitung oleh A055165.