補因子行列は、Adjugate Matrixの転置です。この行列の要素は、元の行列の補因子です。
補因子(つまり、行iおよび列jの補因子行列の要素)は、元の行列からi番目の行とj番目の列を削除して形成される部分行列の行列式で、(-1)^(i + j)を掛けます。
たとえば、行列の場合
行1および列2の補因子行列の要素は次のとおりです。
ここで、行列の行列式とその計算方法に関する情報を見つけることができます。
チャレンジ
あなたの目標は、入力行列の補因子行列を出力することです。
注:補因子行列、または補助行列、行列式、または同様のものを評価する組み込み関数が許可されます。
入力
マトリックスは、コマンドライン引数、関数パラメーター、STDIN
または使用する言語に最適な方法で入力できます。
マトリックスはリストのリストとしてフォーマットされ、各サブリストは1行に対応し、左から右に順序付けられた因子を含みます。行はリストの一番上から下の順に並べられます。
たとえば、行列
a b
c d
はで表され[[a,b],[c,d]]
ます。
あなたの言語に適合し、理にかなっている場合は、角括弧とコンマを別のものに置き換えることができます(例((a;b);(c;d))
)
行列には整数のみが含まれます(負の場合もあります)。
行列は常に正方形です(つまり、行と列の数が同じです)。
入力は常に正しいと仮定することができます(つまり、書式設定の問題、整数以外、空の行列はありません)。
出力
結果として得られる補因子行列はSTDOUT
、に出力されたり、関数から返されたり、ファイルに書き込まれたり、使用する言語に自然に合ったものに似たものになります。
補因子行列は、入力行列とまったく同じ方法でフォーマットする必要があります[[d,-c],[-b,a]]
。文字列を読み取る場合は、入力とまったく同じようにマトリックスがフォーマットされた文字列を返す/出力する必要があります。入力としてリストのリストなどを使用する場合、リストのリストも返す必要があります。
テストケース
- 入力:
[[1]]
出力: [[1]]
- 入力:
[[1,2],[3,4]]
出力: [[4,-3],[-2,1]]
- 入力:
[[-3,2,-5],[-1,0,-2],[3,-4,1]]
出力: [[-8,-5,4],[18,12,-6],[-4,-1,2]]
- 入力:
[[3,-2,7,5,0],[1,-1,42,12,-10],[7,7,7,7,7],[1,2,3,4,5],[-3,14,-1,5,-9]]
出力:
[[9044,-13580,-9709,23982,-9737],[-1981,1330,3689,-3444,406],[14727,7113,2715,-9792,414],[-28448,-2674,-707,16989,14840],[-2149,2569,-2380,5649,-3689]]
得点
これはコードゴルフなので、バイト単位の最短回答が勝ちです。