Istnieje rodzaj macierzy n × n W zwanej podstawową formą kanoniczną Weyru . Taka matryca jest opisana za pomocą bloków i ma następujące właściwości, przy użyciu następującego diagramu referencyjnego:
- głównymi blokami diagonalnymi W ii są macierze n i × n i postaci λ I n i gdzie I n i jest macierzą tożsamości n i × n i .
- n 1 ≥ n 2 ≥ ... ≥ n r
- pierwsze bloki superdiagonalne W k-1, k dla k ∈ 2..r są macierzami n k-1 × n k , które mają pełną rangę kolumny w postaci rzutu o zmniejszonej liczbie wierszy , lub prościej mówiąc, I n k siedzi na n k-1 - n k rzędów zer.
- wszystkie pozostałe bloki mają 0 macierzy.
Na przykład:
- Główne ukośne bloki (żółte) są takie, że n i wynoszą 4, 2, 2 i 1.
- Pierwsze superdiagonalne bloki są zielone.
- Szara strefa składa się ze wszystkich pozostałych bloków, które mają wartość 0 .
Dla tego wyzwania przyjmiemy λ = 1.
Wejście
Matryca kwadratowa z zerami i zerami w dowolnym dogodnym formacie.
Wynik
Wyprowadza jedną z dwóch różnych wartości określających, czy macierzą wejściową jest Weyr, czy nie Weyr.
Zasady
To jest golf golfowy . Wygrywa najmniej bajtów w każdym języku. Obowiązują standardowe zasady / luki.
Przypadki testowe
Przedstawione jako tablice wierszy.
Weyr:
[[1]]
[[1,1],[0,1]]
[[1,0,1,0,0],[0,1,0,1,0],[0,0,1,0,1],[0,0,0,1,0],[0,0,0,0,1]]
[[1,0,0,1,0,0,0,0,0],[0,1,0,0,1,0,0,0,0],[0,0,1,0,0,1,0,0,0],[0,0,0,1,0,0,1,0,0],[0,0,0,0,1,0,0,1,0],[0,0,0,0,0,1,0,0,1],[0,0,0,0,0,0,1,0,0],[0,0,0,0,0,0,0,1,0],[0,0,0,0,0,0,0,0,1]]
[[1,0,0,0,1,0,0,0,0],[0,1,0,0,0,1,0,0,0],[0,0,1,0,0,0,0,0,0],[0,0,0,1,0,0,0,0,0],[0,0,0,0,1,0,1,0,0],[0,0,0,0,0,1,0,1,0],[0,0,0,0,0,0,1,0,1],[0,0,0,0,0,0,0,1,0],[0,0,0,0,0,0,0,0,1]]
Non-Weyr:
[[0]]
[[1,0],[1,1]]
[[1,0,0,1,0,0],[0,1,0,0,0,0],[0,0,1,0,0,1],[0,0,0,1,0,0],[0,0,0,0,1,0],[0,0,0,0,0,1]]
[[1,0,1,0,0],[0,1,0,0,0],[0,0,1,0,0],[0,0,0,1,0],[0,0,0,0,1]]
[[1,0,0,1,0,0,0,0,0],[0,1,0,0,1,0,0,0,0],[0,0,1,0,0,1,0,0,0],[0,0,0,1,0,0,0,0,0],[0,0,0,0,1,0,1,0,0],[0,0,0,0,0,1,0,1,0],[0,0,0,0,0,0,1,0,1],[0,0,0,0,0,0,0,1,0],[0,0,0,0,0,0,0,0,1]]
[[1,0,0,1,0,0,0,0,0],[0,1,0,0,1,0,0,0,0],[0,0,1,0,0,1,0,0,0],[0,0,0,1,0,0,0,0,0],[0,0,0,0,1,0,1,0,0],[0,0,0,0,0,1,0,1,0],[0,0,0,0,0,0,1,0,1],[0,0,0,0,0,0,0,1,0],[0,0,0,0,0,0,0,0,1]]
. Myślę, że to fałsz (ale moja odpowiedź nie identyfikuje go jako takiego).Odpowiedzi:
K (ngn / k) ,
91888480 bajtówWypróbuj online!
źródło
Python 2 , 270 bajtów
Wypróbuj online!
Wyjaśnienie:
Rekurencyjnie sprawdza bloki pod kątem tożsamości i ich superdiagonalnych bloków.
I
sprawdza, czy macierz jest matrycą tożsamościDla każdego bloku macierzy wejściowej funkcja sprawdza, czy jest to tożsamość i czy jest inny blok macierzy tożsamości, po prawej stronie. Następna iteracja sprawdza blok o tym rozmiarze.
źródło