Défi
Étant donné neuf nombres a, b, c, d, e, f, g, h, i
,, en entrée qui correspondent à la matrice carrée:
Trouvez l'inverse de la matrice, et sortez ses composants.
Matrice inverse
L'inverse d'une matrice 3 par 3 obéit à l'équation suivante:
Et peut être calculé comme:
Où est la matrice des cofacteurs:
Et est la transposition de C :
Et est le déterminant de M :
Exemple travaillé
Par exemple, disons que l'entrée est 0, -3, -2, 1, -4, -2, -3, 4, 1
. Cela correspond à la matrice:
Tout d'abord, calculons ce que l'on appelle le déterminant à l'aide de la formule ci-dessus:
Calculons ensuite la matrice des cofacteurs:
Nous devons ensuite transposer (retourner les lignes et les colonnes) pour obtenir :
Enfin, nous pouvons trouver l'inverse comme:
Ainsi, la sortie serait 4, -5, -2, 5, -6, -2, -8, 9, 3
.
Règles
La matrice donnée aura toujours un inverse (c'est-à-dire non singulier). La matrice peut être auto-inverse
La matrice donnée sera toujours une matrice 3 x 3 avec 9 entiers
Les nombres en entrée seront toujours des entiers dans la plage
Les composants non entiers de la matrice peuvent être donnés sous forme décimale ou fractionnelle
Exemples
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
Gagnant
Le code le plus court en octets gagne.
la source
APL (Dyalog Classic), 1 octet
Essayez-le en ligne!
si un lis plat est requis c'est 8 octets
Essayez-le en ligne!
la source
R,
51352785 octetsEssayez-le en ligne!
Commencez par relever l'un de ces défis de golf. Désolé si ma mise en forme est incorrecte!
Un total de 11 octets supplémentaires enregistrés grâce à Giuseppe! 19 octets supplémentaires grâce à JAD!
la source
solve
, la solution est justesolve
, car elle répond à toutes les exigences de la question. Il prend une matrice en entrée et renvoie une matrice.Gelée , 3 octets
Essayez-le en ligne!
En supposant que nous pouvons prendre des données et fournir une liste 2D d'entiers. Si une liste plate d'entiers est vraiment requise pour l'entrée et la sortie, alors cela fonctionne pour 6 octets.
la source
æ*
- exponentiation matricielle,-
- exposant, ce qui équivaut à-
est un caractère de syntaxe pour les littéraux négatifs, mais il est par défautJavaScript (ES6), 123 octets
Enregistré 2 octets grâce à @ Mr.Xcoder
Enregistré 1 octet grâce à @ETHproductions
Prend l'entrée comme 9 valeurs distinctes.
Essayez-le en ligne!
la source
J , 2 octets
Juste une primitive intégrée
Essayez-le en ligne!
la source
Python 2 , 139 octets
Essayez-le en ligne! (A la
return
place deprint
pour faciliter les tests.)la source
Nettoyer , 143 octets
Essayez-le en ligne!
la source
Python 3, 77 octets
Prend la saisie sous forme de liste plate.
C'est 63 octets si l'entrée est prise comme un tableau 2D:
la source
Perl, 226 + 4 (
-plF,
indicateur) = 230 octetsEssayez-le en ligne .
la source
Perl 5, 179 octets
Essayez-le en ligne .
la source
Noether, 168 octets
Essayez-le en ligne
la source
Google Sheets , 16 octets
L'entrée est dans la plage
A1:C3
Les intégrés sont ennuyeux
la source
Pari / GP , 6 octets
Prend l'inverse multiplicatif dans l'anneau de la matriceMn .
Essayez-le en ligne!
la source
Clojure, 165 octets
Je suis désolé que cela génère C en transposition, et je me sens paresseux pour refaire ces longues séquences de caractères pour le corriger pour le moment.
la source
APL (Dyalog), 7 octets
Prend les entrées sous forme de liste plate et les sorties sous forme de liste plate
Essayez-le en ligne!
la source