Ada jenis n × n matriks W yang disebut bentuk kanonik Weyr dasar . Matriks seperti itu dijelaskan oleh blok - bloknya dan memiliki sifat-sifat berikut, menggunakan diagram referensi berikut:
- blok diagonal utama W ii adalah n i × n i matriks dari bentuk λ I n i di mana I n i adalah matriks identitas n i × n i .
- n 1 ≥ n 2 ≥ ... ≥ n r
- blok superdiagonalnya pertama W k-1, k untuk k ∈ 2..r adalah n k-1 × n k matriks yang penuh rank kolom dalam bentuk eselon baris tereduksi , atau lebih sederhananya, saya n k duduk di atas n k-1 - n k baris nol.
- semua blok lainnya adalah 0 matriks.
Sebagai contoh:
- Blok diagonal utama (kuning) sedemikian rupa sehingga n i adalah 4, 2, 2, dan 1.
- Blok superdiagonal pertama berwarna hijau.
- Zona abu-abu terdiri dari semua blok lainnya, yang semuanya 0 .
Untuk tantangan ini kita akan mengasumsikan λ = 1.
Memasukkan
Matriks persegi dengan 0s dan 1s dalam format apa pun yang nyaman.
Keluaran
Keluarkan salah satu dari dua nilai berbeda untuk apakah matriks input adalah Weyr atau tidak.
Aturan
Ini adalah kode-golf . Bytes paling sedikit di setiap bahasa menang. Aturan / celah standar berlaku.
Uji kasus
Disajikan sebagai array baris.
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]]
. Saya pikir itu salah (tapi jawaban saya gagal mengidentifikasinya).Jawaban:
K (ngn / k) ,
91888480 byteCobalah online!
sumber
Python 2 , 270 byte
Cobalah online!
Penjelasan:
Secara rekursif memeriksa blok untuk identitas dan blok superdiagonal mereka.
I
memeriksa apakah sebuah matriks adalah matriks identitasUntuk setiap blok matriks input, fungsinya memeriksa apakah itu sebuah identitas, dan bahwa ada blok matriks identitas lain, di sebelah kanannya. Iterasi berikutnya kemudian melihat blok ukuran itu.
sumber