(zainspirowany tym pytaniem dotyczącym matematyki)
Definicje
Biorąc pod uwagę n x n
macierz kwadratowa , można nazwać Jeżeli istnieje jakiś macierzy kwadratowej B jest takie, że AB = BA = I n , o , że n jest macierzą jednostkową wielkości (matrycy z głównych ukośnych s do niczego innego ) i AB i BA reprezentujące zwykłe mnożenie macierzy (nie wchodzę w to tutaj - idź wziąć klasę algebry liniowej).invertible
n x n
n x n
1
0
Z tym, można nazwać m x n
macierzy C totally invertible
, jeżeli każdy k x k
podmatryca (zdefiniowane niżej) w ° C jest odwracalny dla wszystkich k > 1
, k <= (smaller of m,n)
.
Podmacierz jest definiowana jako macierz wynikowa po usunięciu dowolnej liczby wierszy i / lub kolumn z oryginalnej macierzy. Na przykład poniższą 3x3
macierz C można przekształcić w 2x2
submatrix C ' , usuwając pierwszy wiersz 1 2 3
i środkową kolumnę 2 5 8
w następujący sposób:
C = [[1 2 3]
[4 5 6] --> C' = [[4 6]
[7 8 9]] [7 9]]
Zauważ, że istnieje wiele różnych możliwości submatriksów, powyższy jest tylko przykładem. To wyzwanie dotyczy tylko tych, w których wynikowa submatrix jest k x k
macierzą kwadratową .
Wyzwanie
Biorąc pod uwagę macierz wejściową, określ, czy jest ona całkowicie odwracalna, czy nie.
Wejście
- Pojedyncza matryca rozmiaru
m x n
w dowolnym odpowiednim formacie . - Bez utraty ogólności możesz założyć
m <= n
lubm >= n
, w zależności od tego, który kod jest bardziej golfowy, i wziąć dane wejściowe w ten sposób (tzn. Możesz otrzymać operację transpozycji za darmo, jeśli chcesz). - Rozmiar matrycy wejściowej nie będzie mniejszy niż
3 x 3
i nie będzie większy niż Twój język. - Macierz wejściowa będzie się składać tylko z wartości liczbowych z Z + ( dodatnie liczby całkowite ).
Wyjście
- Truthy / falsey wartość tego, czy matrycy wejściowej jest całkowicie odwracalna.
Zasady
- Dopuszczalny jest pełny program lub funkcja.
- Standardowe luki są zabronione.
- To jest golf golfowy, więc obowiązują wszystkie zwykłe zasady gry w golfa, a wygrywa najkrótszy kod (w bajtach).
Przykłady
Truthy
[[1 2 3]
[2 3 1]
[3 1 2]]
[[2 6 3]
[1 12 2]
[5 3 1]]
[[1 2 3 4]
[2 3 4 1]
[3 4 1 2]]
[[2 3 5 7 11]
[13 17 19 23 29]
[31 37 41 43 47]]
Falsey
[[1 2 3]
[4 5 6]
[7 8 9]]
[[1 6 2 55 3]
[4 5 5 5 6]
[9 3 7 10 4]
[7 1 8 23 9]]
[[2 3 6]
[1 2 12]
[1 1 6]]
[[8 2 12 13 2]
[12 7 13 12 13]
[8 1 12 13 5]]
źródło
2 6 3; 1 12 2; 5 3 1
?6
w kącie, a nie7
. Niezdarne literówki.Odpowiedzi:
Galaretka ,
26 24 23 20 19 1716 bajtów-1 bajt dzięki @miles (niepotrzebne dla każdego
€
, przy przyjmowaniu wyznaczników)-2 bajty, @miles ponownie! (niepotrzebne rozdzielenie łańcucha i użycie
Ѐ
szybkiego)TryItOnline! lub wszystkie 8 testów
W jaki sposób?
źródło
ldepth = 2
ono źródłoZœcLÆḊ
i kolejny bajt w łączu głównym przezçЀJȦ
€
golfa. Całkowicie zapomniałem oЀ
.œcЀJµZœcLÆḊµ€€Ȧ
16 bajtamiMathematica 10.0, 34 bajty
Łańcuch 6 tyld ... nowy osobisty rekord!
źródło
MATL, 57 bajtów
Oczywiście możesz wypróbować online!
Dane wejściowe powinny być w orientacji „pionowej” (nRows> = nColumns). Wydaje mi się, że to może nie być najskuteczniejsze rozwiązanie ... Ale przynajmniej zostawiam miejsce dla innych, aby mnie obezwładnić. Chciałbym usłyszeć konkretne wskazówki, które mogłyby skrócić to konkretne podejście, ale myślę, że ta ogromna liczba bajtów powinna zainspirować innych do wprowadzenia wpisu MATL z zupełnie innym podejściem. Wyświetlacze 0 jeśli falsy lub wartość masywne czy truthy (szybko się Inf jeśli matryca zbyt duże, 1 dodatkowy bajt, można wymienić
H*
zH&Y
logicznego (i)). Zaoszczędź kilka bajtów dzięki @LuisMendo.źródło