Desafio
Dados nove números,, a, b, c, d, e, f, g, h, i
como entrada que corresponde à matriz quadrada:
Encontre o inverso da matriz, e produza seus componentes.
Matriz Inversa
O inverso de uma matriz 3 por 3 obedece à seguinte equação:
E pode ser calculado como:
Onde é a matriz dos cofatores:
E é a transposta de C :
E é o determinante de M :
Exemplo Trabalhado
Por exemplo, digamos que a entrada seja 0, -3, -2, 1, -4, -2, -3, 4, 1
. Isso corresponde à matriz:
Primeiro, vamos calcular o que é conhecido como determinante usando a fórmula acima:
A seguir, vamos calcular a matriz dos cofatores:
Em seguida, precisamos transpor (inverter as linhas e colunas) para obter C T :
Finalmente, podemos encontrar o inverso como:
Então a saída seria 4, -5, -2, 5, -6, -2, -8, 9, 3
.
Regras
A matriz dada sempre terá um inverso (ou seja, não singular). A matriz pode ser auto-inversa
A matriz fornecida sempre será uma matriz 3 por 3 com 9 números inteiros
Os números na entrada sempre serão números inteiros no intervalo
Componentes não inteiros da matriz podem ser dados como um decimal ou uma fração
Exemplos
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
Ganhando
O código mais curto em bytes vence.
fonte
APL (Dyalog Classic), 1 byte
Experimente online!
se for necessário um lis plano, isso significa 8 bytes
Experimente online!
fonte
R,
51352785 bytesExperimente online!
Primeiro, faça um desses desafios de golfe. Desculpe se minha formatação está errada!
Economizou um total de 11 bytes adicionais graças a Giuseppe! Economizou 19 bytes adicionais graças ao JAD!
fonte
solve
, a solução é justasolve
, pois atende a todos os requisitos da pergunta. Ele pega uma matriz como entrada e retorna uma matriz.Geléia , 3 bytes
Experimente online!
Supondo que possamos receber informações e fornecer como uma lista 2D de números inteiros. Se uma lista simples de números inteiros é realmente necessária para entrada e saída, isso funciona para 6 bytes.
fonte
æ*
- exponenciação da matriz,-
- expoente, que é igual a-
é um caractere de sintaxe para literais negativos, mas o padrão éJavaScript (ES6), 123 bytes
Economizou 2 bytes graças a @ Mr.Xcoder
Economizou 1 byte graças a @ETHproductions
Aceita entrada como 9 valores distintos.
Experimente online!
fonte
J , 2 bytes
Apenas um primitivo embutido
Experimente online!
fonte
Python 2 , 139 bytes
Experimente online! (Em
return
vez deprint
para facilitar o teste.)fonte
Limpo , 143 bytes
Experimente online!
fonte
Python 3, 77 bytes
Aceita entrada como uma lista simples.
São 63 bytes se a entrada for aceita como uma matriz 2D:
fonte
Perl, 226 + 4 (
-plF,
sinalizador) = 230 bytesExperimente online .
fonte
Perl 5, 179 bytes
Experimente online .
fonte
Noether, 168 bytes
Experimente online
fonte
Planilhas Google , 16 bytes
A entrada está no intervalo
A1:C3
Built-ins são chatos
fonte
Pari / GP , 6 bytes
Toma inversa multiplicativa no anel da matrizMn .
Experimente online!
fonte
Clojure, 165 bytes
Sinto muito, isso gera C na transposição e estou com preguiça de refazer essas longas sequências de caracteres para corrigi-lo no momento.
fonte
APL (Dyalog), 7 bytes
Recebe entrada como uma lista simples e gera como uma lista simples
Experimente online!
fonte