(inspirado por esta pregunta sobre matemáticas)
Las definiciones
Dada una n x n
matriz cuadrada A , podemos llamarla invertible
si existe alguna n x n
matriz cuadrada B tal que AB = BA = I n , siendo I n la matriz de identidad de tamaño n x n
(la matriz con la diagonal principal 1
sy cualquier otra cosa 0
), y AB y BA que representa la multiplicación matricial habitual (no voy a entrar en eso aquí, vaya a tomar una clase de álgebra lineal).
A partir de eso, podemos llamar a una m x n
matriz C totally invertible
si cada k x k
submatriz (que se define más adelante) de C es invertible para todos k > 1
, k <= (smaller of m,n)
.
Una submatriz se define como la matriz resultante después de la eliminación de cualquier número de filas y / o columnas de la matriz original. Por ejemplo, la siguiente 3x3
matriz C se puede transformar en una 2x2
submatriz C ' eliminando la primera fila 1 2 3
y la columna central de la 2 5 8
siguiente manera:
C = [[1 2 3]
[4 5 6] --> C' = [[4 6]
[7 8 9]] [7 9]]
Tenga en cuenta que hay muchas posibilidades de submatrices diferentes, lo anterior es solo un ejemplo. Este desafío solo se refiere a aquellos en los que la submatriz resultante es una k x k
matriz cuadrada .
El reto
Dada una matriz de entrada, determine si es totalmente invertible o no.
La entrada
- Una única matriz de tamaño
m x n
, en cualquier formato adecuado . - Sin pérdida de generalidad, puede asumir
m <= n
om >= n
, lo que sea más golfista para su código, y tomar la entrada de esa manera (es decir, obtiene una operación de transposición de forma gratuita si lo desea). - El tamaño de la matriz de entrada no será menor
3 x 3
ni mayor que el que pueda manejar su idioma. - La matriz de entrada consistirá solo en valores numéricos de Z + (los enteros positivos ).
La salida
- Un valor verdadero / falso para determinar si la matriz de entrada es totalmente invertible.
Las normas
- Un programa completo o una función son aceptables.
- Las lagunas estándar están prohibidas.
- Este es el código de golf, por lo que se aplican todas las reglas habituales de golf, y gana el código más corto (en bytes).
Los ejemplos
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
rincón, no un 7
. Errores tipográficos torpes.
2 6 3; 1 12 2; 5 3 1
?