(вдохновленный этим вопросом по математике)
Определения
Для данной n x nквадратной матрицы A мы можем назвать ее, invertibleесли существует некоторая n x nквадратная матрица B такая, что AB = BA = I n , где I n - единичная матрица размера n x n(матрица с главной диагональю 1s и все остальное 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?