(натхненний цим питанням на Math)
Визначення
Враховуючи n x n
квадратну матрицю A , ми можемо її назвати, invertible
якщо існує якась n x n
квадратна матриця B, така що AB = BA = I n , причому I n є матрицею ідентичності розміру n x n
(матриця з основною діагоналлю 1
s і будь-чим іншим 0
), і AB і BA, що представляють звичайне матричне множення (я не буду тут вникати - перейдіть лінійний клас алгебри)
З цього ми можемо назвати m x n
матрицю C totally invertible
, якщо кожен k x k
подматріци (визначено нижче) C звернемо для всіх k > 1
, k <= (smaller of m,n)
.
Підматриця визначається як отримана матриця після видалення будь-якої кількості рядків та / або стовпців з вихідної матриці. Наприклад, нижню 3x3
матрицю C можна перетворити в 2x2
підматрицю C ' , видаливши перший рядок 1 2 3
і середній стовпець 2 5 8
наступним чином:
C = [[1 2 3]
[4 5 6] --> C' = [[4 6]
[7 8 9]] [7 9]]
Зауважимо, що існує багато різних підматричних можливостей, наведене вище - лише приклад. Ця проблема стосується лише тих, де отримана підматриця є k x k
квадратною матрицею .
Змагання
Дана вхідна матриця визначте, вона повністю обернена чи ні.
Вхідні дані
- Єдина матриця розміру
m x n
, у будь-якому відповідному форматі . - Не втрачаючи загальності, ви можете припустити
m <= n
абоm >= n
, залежно від того, хто є гравцем для вашого коду, і взяти вхід таким чином (тобто ви отримаєте операцію транспонування безкоштовно, якщо цього хочете). - Розмір вхідної матриці буде не меншим
3 x 3
та не більшим, ніж може працювати ваша мова. - Матриця введення буде складатися з лише числових значень Z + ( додатні цілі числа ).
Вихід
- Truthy / falsey значення вхідний матриці повністю звернемо.
Правила
- Прийнятна або повна програма, або функція.
- Стандартні лазівки заборонені.
- Це код-гольф, тому застосовуються всі звичайні правила гольфу, і найкоротший код (у байтах) виграє.
Приклади
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]]
6
в кутку, а не 7
. Незграбні друкарські помилки.
2 6 3; 1 12 2; 5 3 1
?