2行2列の行列式
a b
c d
によって与えられad - bc
ます。
次元2 n x 2 n、n≥1 の数字の行列が与えられた場合、単一の数に達するまで各2 x 2サブブロックの行列式を再帰的に計算することにより得られた結果を出力します。
例えば、与えられた入力
3 1 4 1
5 9 2 6
5 3 5 8
9 7 9 3
1つのステップの後、以下を取得します。
(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
。
ルール
- 行列の要素は常に1桁の整数、つまり0〜9です。
- データの前処理が行われない限り、任意の便利なリストまたは文字列形式で入力を取得できます。マトリックスは常に正方形なので、必要に応じて、2Dリストではなく単一の1Dリストとして入力を受け取ることができます。
- 入力は、関数入力、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]
ます。2つの同一の行があるため、その完全な行列式はゼロです。したがって、これは特異な(非可逆を意味する)4×4行列であるため、A055165にはカウントされません。ただし、ここで説明する「再帰的」決定要因は1*1-1*0==1
です。反対の方向では、マトリックスに[0,0,0,1;1,0,0,0;0,1,0,0;0,0,1,0]
は「再帰的な」行列式があり0*0-0*0==0
ます。ただし、その行は別の順序の単位行列の行であるため、その完全な行列式はゼロ以外でなければなりません。A055165によってカウントされます。