Reto
Dados nueve números, a, b, c, d, e, f, g, h, i
como entrada que corresponden a la matriz cuadrada:
Encuentre el inverso de la matriz, y genere sus componentes.
Matriz inversa
El inverso de una matriz 3 por 3 obedece a la siguiente ecuación:
Y se puede calcular como:
Donde es la matriz de cofactores:
Y es la transposición de C :
Y es el determinante de M :
Ejemplo trabajado
Por ejemplo, digamos que la entrada es 0, -3, -2, 1, -4, -2, -3, 4, 1
. Esto corresponde a la matriz:
En primer lugar, calculemos lo que se conoce como determinante utilizando la fórmula anterior:
A continuación, calculemos la matriz de cofactores:
Entonces necesitamos transponer (voltear las filas y columnas) para obtener :
Finalmente, podemos encontrar el inverso como:
Entonces la salida sería 4, -5, -2, 5, -6, -2, -8, 9, 3
.
Reglas
La matriz dada siempre tendrá un inverso (es decir, no singular). La matriz puede ser autoinversa
La matriz dada siempre será una matriz de 3 por 3 con 9 enteros.
Los números en la entrada siempre serán enteros en el rango
Los componentes no enteros de la matriz se pueden dar como un decimal o una fracción
Ejemplos
Input > Output
1, 0, 0, 0, 1, 0, 0, 0, 1 > 1, 0, 0, 0, 1, 0, 0, 0, 1
0, -3, -2, 1, -4, -2, -3, 4, 1 > 4, -5, -2, 5, -6, -2, -8, 9, 3
1, 2, 3, 3, 1, 2, 2, 1, 3 > -1/6, 1/2, -1/6, 5/6, 1/2, -7/6, -1/6, -1/2, 5/6
7, 9, 4, 2, 7, 9, 3, 4, 5 > -1/94, -29/94, 53/94, 17/94, 23/94, -55/94, -13/94, -1/94, 31/94
Victorioso
El código más corto en bytes gana.
fuente
APL (Dyalog Classic), 1 byte
Pruébalo en línea!
si se requiere una lis plana, esto es 8 bytes
Pruébalo en línea!
fuente
R,
51352785 bytesPruébalo en línea!
Primero ve a hacer uno de estos desafíos de golf. Lo siento si mi formato es incorrecto!
¡Ahorré un total de 11 bytes adicionales gracias a Giuseppe! ¡Ahorró 19 bytes adicionales gracias a JAD!
fuente
solve
, la solución es justasolve
, ya que cumple con todos los requisitos de la pregunta. Toma una matriz como entrada y devuelve una matriz.Jalea , 3 bytes
Pruébalo en línea!
Suponiendo que podamos tomar datos y proporcionar una lista 2D de enteros. Si realmente se requiere una lista plana de enteros tanto para entrada como para salida, entonces esto funciona para 6 bytes.
fuente
æ*
- exponenciación matricial,-
- exponente, que es igual a-
es un carácter de sintaxis para literales negativos pero su valor predeterminado esJavaScript (ES6), 123 bytes
Guardado 2 bytes gracias a @ Mr.Xcoder
Guardado 1 byte gracias a @ETHproductions
Toma la entrada como 9 valores distintos.
Pruébalo en línea!
fuente
J , 2 bytes
Solo una primitiva incorporada
Pruébalo en línea!
fuente
Python 2 , 139 bytes
Pruébalo en línea! (Tiene en
return
lugar deprint
facilitar la prueba).fuente
Limpio , 143 bytes
Pruébalo en línea!
fuente
Python 3, 77 bytes
Toma la entrada como una lista plana.
Son 63 bytes si la entrada se toma como una matriz 2D:
fuente
Perl, 226 + 4 (
-plF,
bandera) = 230 bytesPruébalo en línea .
fuente
Perl 5, 179 bytes
Pruébalo en línea .
fuente
Noether, 168 bytes
Pruébalo en línea
fuente
Hojas de cálculo de Google , 16 bytes
La entrada está en el rango
A1:C3
Los empotrados son aburridos
fuente
Pari / GP , 6 bytes
Toma inversa multiplicativa en el anillo de la matrizMETROnorte .
Pruébalo en línea!
fuente
Clojure, 165 bytes
Lamento que esto transmita C en transposición, y me siento perezoso para rehacer esas secuencias de caracteres largas para solucionarlo en este momento.
fuente
APL (Dyalog), 7 bytes
Toma la entrada como una lista plana y las salidas como una lista plana
Pruébalo en línea!
fuente