2'ye 2 matrisinin belirleyicisi
a b
c d
tarafından verilir ad - bc
.
2 n x 2 n , n ≥ 1 boyutlarına sahip bir basamak matrisi verildiğinde , tek bir sayıya ulaşıncaya kadar her bir 2 ile 2 alt bloğun belirleyicisini tekrar tekrar hesaplayarak elde edilen sonucu çıkar.
Örneğin, girdi verildiğinde
3 1 4 1
5 9 2 6
5 3 5 8
9 7 9 3
Bir adımdan sonra şunları elde ederiz:
(3*9 - 1*5) (4*6 - 1*2) = 22 22
(5*7 - 3*9) (5*3 - 8*9) 8 -57
Ve bir kez daha yineleyerek:
(22*-57 - 22*8) = -1430
Bu nedenle, çıktı olmalıdır -1430
.
kurallar
- Matrisin elemanları her zaman tek haneli tamsayılar olacaktır, yani 0 ila 9.
- Verilerin ön işlemesi yapılmadığı sürece herhangi bir uygun liste veya dize biçiminde girdi alabilirsiniz. Matris her zaman kare olduğundan, isterseniz 2B listesi yerine tek bir 1D listesi olarak giriş alabilirsiniz.
- Giriş, işlev girişi, STDIN, komut satırı argümanı veya en yakın alternatif aracılığıyla olabilir.
- Çıktı, fonksiyon çıktısı için tek bir tamsayı, STDOUT veya en yakın alternatif olmalıdır. Bir tamsayı bir liste veya matriste çıkaramazsınız.
- Diliniz bunları destekliyorsa yerleşik determinant ve matris manipülasyon yöntemlerini kullanabilirsiniz.
- Geçerli herhangi bir girdi için algoritmanız teoride çalışmalıdır.
- Standart kod golf kuralları geçerlidir.
Test senaryoları
Aşağıdaki test senaryoları Python tarzı listeler olarak verilmiştir:
[[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
(Bu sorunla ilgili yardım için @ MartinBüttner'a teşekkürler)
[1,0,1,0;1,1,1,1;1,1,1,1;0,0,0,1]
. İki belirleyici satırı olduğundan tam belirleyicisi sıfırdır. Bu nedenle bu tekil (tersine çevrilemez anlamına gelir) 4 × 4 matristir, bu nedenle A055165 tarafından sayılmaz. Ancak burada tartışılan "özyinelemeli" determinanttır 1*1-1*0==1
. Ters yönde, matris [0,0,0,1;1,0,0,0;0,1,0,0;0,0,1,0]
"özyinelemeli" belirleyiciye sahiptir 0*0-0*0==0
. Bununla birlikte, tam belirleyicisi sıfır olmamalıdır, çünkü satırları sadece kimlik matrisinin başka bir sıradaki satırlarıdır; ve A055165 ile sayılır.