Matryca kofaktora jest transpozycją macierzy adiuwatu . Elementy tej matrycy są kofaktorami oryginalnej matrycy.
Kofaktor (tj. Element macierzy kofaktora w rzędzie i i kolumnie j) jest wyznacznikiem submatrix utworzonej przez usunięcie i-tego rzędu i j-tej kolumny z oryginalnej macierzy, pomnożonej przez (-1) ^ (i + j).
Na przykład dla matrycy
Element macierzy kofaktora w wierszu 1 i kolumnie 2 to:
Informacje na temat wyznacznika macierzy i sposobu ich obliczania można znaleźć tutaj .
Wyzwanie
Twoim celem jest wyprowadzenie macierzy kofaktora macierzy wejściowej.
Uwaga : Dozwolone są wbudowane, które oceniają matryce kofaktorów lub macierze przyległe, wyznaczniki lub cokolwiek podobnego .
Wejście
Macierz może być wprowadzona jako argument wiersza poleceń, jako parametr funkcji, STDIN
w dowolny sposób lub w sposób najbardziej odpowiedni dla używanego języka.
Macierz zostanie sformatowana jako lista list, a każda lista podrzędna odpowiada jednemu wierszowi, który zawiera czynniki uporządkowane od lewej do prawej. Rzędy są uporządkowane od góry do dołu na liście.
Na przykład macierz
a b
c d
będzie reprezentowany przez [[a,b],[c,d]]
.
Możesz zamienić nawiasy kwadratowe i przecinki na coś innego, jeśli pasuje do twojego języka i jest sensowny (np. ((a;b);(c;d))
)
Macierze będą zawierać tylko liczby całkowite (które mogą być ujemne) .
Macierze zawsze będą kwadratowe (tj. Ta sama liczba wierszy i kolumn).
Możesz założyć, że dane wejściowe zawsze będą poprawne (tj. Nie będzie problemu z formatowaniem, nic poza liczbami całkowitymi, brak pustej macierzy).
Wynik
Otrzymana macierz kofaktora może zostać wyprowadzona STDOUT
, zwrócona z funkcji, zapisana do pliku lub w dowolny podobny sposób, który naturalnie pasuje do używanego języka.
Macierz kofaktora należy sformatować dokładnie w taki sam sposób, jak podane są macierze wejściowe, np [[d,-c],[-b,a]]
. Jeśli czytasz ciąg, musisz zwrócić / wyprowadzić ciąg, w którym macierz jest sformatowana dokładnie tak, jak na wejściu. Jeśli używasz czegoś takiego jak np. Lista list jako danych wejściowych, musisz również zwrócić listę list.
Przypadki testowe
- Wejście:
[[1]]
Wynik: [[1]]
- Wejście:
[[1,2],[3,4]]
Wynik: [[4,-3],[-2,1]]
- Wejście:
[[-3,2,-5],[-1,0,-2],[3,-4,1]]
Wynik: [[-8,-5,4],[18,12,-6],[-4,-1,2]]
- Wejście:
[[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]]
Wynik:
[[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]]
Punktacja
To jest golf golfowy, więc wygrywa najkrótsza odpowiedź w bajtach.