Wyzwanie
Biorąc pod uwagę dziewięć liczb, a, b, c, d, e, f, g, h, i
jako dane wejściowe odpowiadające macierzy kwadratowej:
Znajdź odwrotność macierzy, i wypisz jej składniki.
Matryca odwrotna
Odwrotność macierzy 3 na 3 jest zgodna z następującym równaniem:
I można obliczyć jako:
Gdzie jest matrycą kofaktorów:
A jest transpozycją C :
A jest wyznacznikiem M :
Przykład działania
Załóżmy na przykład, że dane wejściowe to 0, -3, -2, 1, -4, -2, -3, 4, 1
. Odpowiada to macierzy:
Po pierwsze, obliczmy to, co jest znane jako wyznacznik, używając powyższego wzoru:
Następnie obliczmy macierz kofaktorów:
Następnie musimy transponować (odwrócić wiersze i kolumny), aby uzyskać C T :
Wreszcie możemy znaleźć odwrotność jako:
Więc wynik byłby 4, -5, -2, 5, -6, -2, -8, 9, 3
.
Zasady
Dana matryca zawsze będzie miała odwrotność (tzn. Nieparzysta). Macierz może być odwrotna do siebie
Podana macierz będzie zawsze macierzą 3 na 3 z 9 liczbami całkowitymi
Liczby na wejściu zawsze będą liczbami całkowitymi z zakresu
Niecałkowite składniki macierzy mogą być podawane w postaci dziesiętnej lub ułamkowej
Przykłady
Input > Output
1, 0, 0, 0, 1, 0, 0, 0, 1 > 1, 0, 0, 0, 1, 0, 0, 0, 1
0, -3, -2, 1, -4, -2, -3, 4, 1 > 4, -5, -2, 5, -6, -2, -8, 9, 3
1, 2, 3, 3, 1, 2, 2, 1, 3 > -1/6, 1/2, -1/6, 5/6, 1/2, -7/6, -1/6, -1/2, 5/6
7, 9, 4, 2, 7, 9, 3, 4, 5 > -1/94, -29/94, 53/94, 17/94, 23/94, -55/94, -13/94, -1/94, 31/94
Zwycięski
Najkrótszy kod w bajtach wygrywa.
źródło
APL (Dyalog Classic), 1 bajt
Wypróbuj online!
jeśli wymagany jest płaski lis, jest to 8 bajtów
Wypróbuj online!
źródło
R,
51352785 bajtówWypróbuj online!
Najpierw wykonaj jedno z tych wyzwań golfowych. Przepraszam, jeśli moje formatowanie jest nieprawidłowe!
Zaoszczędzono dodatkowo 11 bajtów dzięki Giuseppe! Zaoszczędź dodatkowe 19 bajtów dzięki JAD!
źródło
solve
, rozwiązanie jest po prostusolve
, ponieważ spełnia wszystkie wymagania pytania. Pobiera macierz jako dane wejściowe i zwraca macierz.Galaretka , 3 bajty
Wypróbuj online!
Zakładając, że możemy wziąć dane wejściowe i podać jako listę liczb całkowitych 2D. Jeśli naprawdę wymagana jest płaska lista liczb całkowitych zarówno dla wejścia, jak i wyjścia, działa to dla 6 bajtów.
źródło
æ*
- wykładnik macierzy,-
- wykładnik, który jest równy-
jest znakiem składni literałów ujemnych, ale domyślnie jest toJavaScript (ES6), 123 bajty
Zapisano 2 bajty dzięki @ Mr.Xcoder
Zapisano 1 bajt dzięki @ETHproductions
Przyjmuje dane wejściowe jako 9 różnych wartości.
Wypróbuj online!
źródło
J , 2 bajty
Tylko wbudowany prymityw
Wypróbuj online!
źródło
Python 2 , 139 bajtów
Wypróbuj online! (
return
Zamiast tegoprint
dla ułatwienia testowania.)źródło
Czysty , 143 bajty
Wypróbuj online!
źródło
Python 3, 77 bajtów
Pobiera dane wejściowe jako płaską listę.
Ma 63 bajty, jeśli dane wejściowe są traktowane jako tablica 2D:
źródło
Perl, 226 + 4 (
-plF,
flaga) = 230 bajtówWypróbuj online .
źródło
Perl 5, 179 bajtów
Wypróbuj online .
źródło
Noether, 168 bajtów
Wypróbuj online
źródło
Arkusze Google , 16 bajtów
Dane wejściowe mieszczą się w zakresie
A1:C3
Wbudowane są nudne
źródło
Pari / GP , 6 bajtów
Robi multiplikatywną odwrotność w pierścieniu macierzyM.n .
Wypróbuj online!
źródło
Clojure, 165 bajtów
Przykro mi, że dane wyjściowe C są transponowane i czuję się leniwy, aby ponownie wykonać te długie sekwencje postaci, aby to naprawić.
źródło
APL (Dyalog), 7 bajtów
Pobiera dane wejściowe jako listę płaską i wyniki jako listę płaską
Wypróbuj online!
źródło