(вдохновленный этим вопросом по математике)
Определения
Для данной 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 + ( натуральные числа ).
Выход
- Значение true / 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
?