Anda diberi persegi matriks , dan daftar (atau vektor) panjang yang berisi nomor sampai (atau melalui ). Tugas Anda adalah menyusun ulang kolom dan baris dari matriks sesuai dengan urutan yang ditentukan dalam .
Artinya, Anda akan membangun sebuah matriks di mana elemen -th adalah elemen -th . Anda juga harus menampilkan kebalikan dari tindakan ini; yaitu, elemen (i, j) -A dari akan berakhir pada posisi dalam matriks .
Sebagai contoh, diberikan
output harus
Anda dapat mengambil input dan output melalui salah satu metode I / O default. Anda tidak harus menentukan matriks mana yang atau , selama Anda menghasilkan keduanya. Anda dapat mengasumsikan hanya berisi bilangan bulat positif, dan Anda dapat menggunakan pengindeksan berbasis 1 atau 0 untuk . Anda harus mendukung matriks hingga setidaknya ukuran .
Contoh
===== Input =====
A =
35 1 6 26 19 24
3 32 7 21 23 25
31 9 2 22 27 20
8 28 33 17 10 15
30 5 34 12 14 16
4 36 29 13 18 11
u=
3 5 6 1 4 2
==== Output =====
B =
2 27 20 31 22 9
34 14 16 30 12 5
29 18 11 4 13 36
6 19 24 35 26 1
33 10 15 8 17 28
7 23 25 3 21 32
C =
17 15 8 10 28 33
13 11 4 18 36 29
26 24 35 19 1 6
12 16 30 14 5 34
21 25 3 23 32 7
22 20 31 27 9 2
sumber
0
sebagai pemisah?u = [2, 0, 1]
?Jawaban:
R , 42 byte
Cobalah online!
Diambil
A
sebagaimatrix
indeks berbasis 1 dan 1o
.sumber
MATL ,
1513 byteMasukan
u
, laluA
.Keluaran
B
, kemudianC
tanpa pemisah, karena tidak ada ambiguitas.Cobalah online!
Penjelasan
sumber
Oktaf , 33 byte
Cobalah online!
Terima kasih kepada Luis untuk memperbaiki kesalahan dan menghemat beberapa byte!
Pengindeksan dasar berfungsi di sini untuk kedua tugas, dengan menetapkan vektorv sama dengan permutasi yang membatalkan u . Yaitu, jika u=(3,1,2) maka elemen pertama dari v adalah 2, karena 1 berada di posisi kedua dari u . Ini dilakukan dengan fungsi sortir Octave .
sumber
Python 3 dengan numpy,
5145 byteCobalah online!
-6 byte terima kasih kepada @xnor
Fungsi ini mengambil dua argumen:0 hingga n - 1 .
numpy
matriks dan vektor permutasi yang memiliki nilai darisumber
for
-loop tidak muncul di pikiran saya.Bahasa Wolfram (Mathematica) , 30 byte
Cobalah online!
Masukkan sebagai
f[A][u]
.sumber
PowerShell ,
787371 byteCobalah online .
sumber
Jelly , 13 byte
Cobalah online!
sumber
J , 19 byte
Cobalah online!
]/:~"1/:
/:
mengurutkan arg kiri (matriks) sesuai dengan urutan yang akan mengurutkan arg kanan (urutan tertentu). Ini semacam baris./:~"1
lagi sesuai dengan urutan yang ditentukan]
. Tapi kali ini kami menyortir dengan peringkat 1, yaitu, kami menyortir setiap baris, yang memiliki efek menyortir kolom.],:/:
Kami menerapkan hal di atas menggunakan urutan yang ditentukan]
dan tingkat atas urutan yang ditentukan/:
. Ini memberi kita 2 hasil yang kita inginkan.sumber
u
diizinkan berbasis-0, jadi sort (/:
) dapat mengindeks ({
) dengan bertukar argsJavaScript (Node.js) ,
777068 byteCobalah online!
sumber
v
itu. Sangat rapi bagaimana Anda menemukan penggunaan untuk kegagalan diam-diam mode non-tugas penugasan properti ke nilai primitif, dan menggunakannya untuk kasus dasar rekursi Anda.APL (Dyalog Extended) , 12 byte SBCS
Cobalah online!
⎕
[3,1,2]
⍮⍨
penjajaran-selfie;[[3,1,2],[3,1,2]]
⍋¨
permutasi-inversi masing-masing;[[2,3,1],[2,3,1]]
⍛
kemudian⍮⍨
disandingkan dengan dirinya sendiri[[[2,3,1],[2,3,1]],[[3,1,2],[3,1,2]]]
⌷
∘
⎕
¨
sumber
J ,
17 16 1514 byte-1 berkat @Jonah
Cobalah online!
sumber
([{"1{)~(,:/:)
: Cobalah online!Arang , 24 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Diindeks 0. Catatan: Ruang tambahan. Penjelasan:
sumber
Kotlin , 213 byte
Cobalah online!
sumber
APL + WIN, 21 byte
Anjuran untuk input u diikuti oleh a. Output b segera dari atas c tanpa pemisah:
Cobalah online! Atas perkenan Dyalog Classic
sumber
Perl 5 , 79 byte
Cobalah online!
sumber
Jelly ,
12 1113 byte+2 :( untuk memperbaiki kasus ketika B = C
Tautan diad menerima daftar daftar,
A
(n
dengann
), di sebelah kiri dan daftarn
bilangan bulat pertama di sebelah kananu
,, yang menghasilkan daftar daftar daftar[B, C]
,.Cobalah online!
Bagaimana?
sumber
q, 26 byte
iasc
mengembalikan indeks untuk mengurutkan argumennya.sumber
Bersih , 91 byte
Cobalah online!
Menentukan
$ :: {{a}} [Int] -> [{{a}}]
(digunakan dengana = Int
) mengambil array array dan daftar indeks berbasis nol, mengembalikan daftar array array yang mengandung B dan C.sumber
Python 3 , 91 byte
Cobalah online!
Mengambil parameter sebagai daftar 2D dan 1D dan mengembalikan daftar yang berisi dua daftar 2D B dan C. Saya tidak yakin apakah ada cara yang lebih bersih untuk melakukan semua for-loop.
sumber
C ++ (gcc) ,
148142 byteCobalah online!
Berkat saran @ceilingcat untuk menggunakan #import <queue> alih-alih <vector> yang secara misterius membawa std :: vector
sumber