Tantangan
Diberikan sembilan angka,, a, b, c, d, e, f, g, h, i
sebagai input yang sesuai dengan matriks kuadrat:
Temukan kebalikan dari matriks, dan output komponen-komponennya.
Matriks Terbalik
Kebalikan dari matriks 3 oleh 3 mematuhi persamaan berikut:
Dan dapat dihitung sebagai:
Di mana adalah matriks kofaktor:
Dan adalah transposisi dari :
Dan adalah penentu :M
Contoh yang berhasil
Sebagai contoh, katakanlah inputnya 0, -3, -2, 1, -4, -2, -3, 4, 1
. Ini sesuai dengan matriks:
Pertama, mari kita hitung apa yang dikenal sebagai penentu menggunakan rumus di atas:
Selanjutnya mari kita hitung matriks kofaktor:
Kita kemudian perlu mengubah posisi (membalik baris dan kolom) untuk mendapatkan :C T
Akhirnya, kita dapat menemukan kebalikannya sebagai:
Jadi hasilnya akan 4, -5, -2, 5, -6, -2, -8, 9, 3
.
Aturan
Matriks yang diberikan akan selalu memiliki invers (yaitu non-singular). Matriksnya mungkin terbalik sendiri
Matriks yang diberikan akan selalu berupa matriks 3 by 3 dengan 9 bilangan bulat
Angka-angka dalam input akan selalu bilangan bulat dalam rentang
Komponen non-integer dari matriks dapat diberikan sebagai desimal atau pecahan
Contohnya
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
Kemenangan
Kode terpendek dalam byte menang.
sumber
APL (Dyalog Classic), 1 byte
Cobalah online!
jika sebuah flat diperlukan, ini adalah 8 byte
Cobalah online!
sumber
R,
51352785 byteCobalah online!
Pertama lakukan salah satu tantangan golf ini. Maaf jika pemformatan saya salah!
Menyimpan total 11 byte tambahan berkat Giuseppe! Menyimpan 19 byte tambahan berkat JAD!
sumber
solve
, solusinya adilsolve
, karena memenuhi semua persyaratan pertanyaan. Dibutuhkan matriks sebagai input dan mengembalikan matriks.Jelly , 3 byte
Cobalah online!
Dengan asumsi kita dapat mengambil input dan memberikan daftar bilangan bulat 2D. Jika daftar datar bilangan bulat benar-benar diperlukan untuk input dan output, maka ini berfungsi selama 6 byte.
sumber
æ*
-
-
JavaScript (ES6), 123 byte
Disimpan 2 byte berkat @ Mr.Xcoder
Disimpan 1 byte berkat @ETHproduksi
Mengambil input sebagai 9 nilai berbeda.
Cobalah online!
sumber
J , 2 byte
Hanya primitif bawaan
Cobalah online!
sumber
Python 2 , 139 byte
Cobalah online! (Telah
return
bukannyaprint
untuk kemudahan pengujian.)sumber
Bersih , 143 byte
Cobalah online!
sumber
Python 3, 77 byte
Mengambil input sebagai daftar datar.
Ini 63 byte jika input diambil sebagai array 2D:
sumber
Perl, 226 + 4 (
-plF,
flag) = 230 byteCobalah online .
sumber
Perl 5, 179 byte
Cobalah online .
sumber
Noether, 168 byte
Cobalah online
sumber
Google Sheets , 16 byte
Input ada dalam kisaran
A1:C3
Built-in membosankan
sumber
Pari / GP , 6 byte
Membawa inversi multiplikatif di ring matriksM.n .
Cobalah online!
sumber
Clojure, 165 byte
Saya minta maaf ini menghasilkan C dalam transpos, dan saya merasa malas untuk melakukan kembali urutan karakter panjang untuk memperbaikinya saat ini.
sumber
APL (Dyalog), 7 byte
Mengambil input sebagai daftar datar dan keluaran sebagai daftar datar
Cobalah online!
sumber