Diberikan matriks integer a
dan integer nonnegatif i
, menghasilkan pemetaan b
yang memetakan nilai yang berbeda di i
kolom th a
ke baris a
yang memiliki nilai di i
kolom th.
Anda dapat berasumsi bahwa i
berada dalam kisaran setengah terbuka [0, num_cols(a))
(atau [1, num_cols(a)]
jika Anda memilih untuk menggunakan indeks berbasis 1), dan bahwa semua bilangan bulat berada dalam kisaran yang dapat direpresentasikan untuk bahasa Anda. Input dan output dapat dilakukan dengan cara yang masuk akal, selama memenuhi persyaratan dasar tantangan (array 2D -> pemetaan dari ints ke array array ints 2D). Selama pemetaannya jelas dan konsisten, kunci tidak perlu dimasukkan dalam output.
Contohnya
[[1]], 0 -> {1: [[1]]}
[[3, 4, 5], [1, 4, 2], [5, 5, 5], [7, 7, 7], [1, 5, 9]], 1 -> {4: [[3, 4, 5], [1, 4, 2]], 5: [[5, 5, 5], [1, 5, 9]], 7: [[7, 7, 7]]}
[[1, 2, 3, 4, 5], [5, 4, 3, 2, 1], [2, 3, 4, 5, 6], [8, 9, 100, 0, 2]], 4 -> {5: [[1, 2, 3, 4, 5]], 1: [[5, 4, 3, 2, 1]], 6: [[2, 3, 4, 5, 6]], 2: [[8, 9, 100, 0, 2]]}
Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
Jawaban:
Oktaf , 24 byte
Cobalah online!
Ini menciptakan fungsi anonim yang mengembalikan matriks yang barisnya cocok dengan kriteria. Array indeks oktaf pada 1, bukan nol, dan baris matriks dipisahkan oleh a
;
.Matriks adalah yang terbaik yang dilakukan Octave — dengan sangat baik, sehingga tantangan ini dapat diselesaikan menggunakan sintaksis murni, tanpa fungsi bawaan.
Penjelasan
sumber
Ruby , 26 byte
Cobalah online!
sumber
Bahasa Wolfram (Mathematica) , 21 byte
1-diindeks. Mengembalikan
Association
pemetaan.Cobalah online!
Ini adalah kasus yang jarang terjadi di mana fungsi yang lebih panjang (
Extract
) mengurangi jumlah byte (yang lebih pendek menjadiPart
atau[[ ... ]]
) karenaExtract
dapat kari. Hasilnya adalah solusi dua fungsi yang sangat ringkas ini.Penjelasan
Fungsi yang mengekstrak
<second input>
elemen th.Kelompokkan
<first input>
daftar ke dalam yang terkait dengan kunci berbeda<above function>[element]
.sumber
Haskell ,
6460 byteCobalah online!
sumber
Bersih , 40 byte
Cobalah online!
Sebuah lambda (
:: Int [[Int]] Int -> [[Int]]
) di mana aplikasi parsial hanya dari dua argumen pertama memberikan pemetaan pada argumen ketiga.sumber
J , 16 byte
-3 byte terima kasih kepada FrownyFrog!
Cobalah online!
Penjelasan:
Kata kerja diad, dengan
i
argumen kiri dan argumena
kanan.]
adalah argumen yang tepat,a
{"1
menemukan angka-angka dii
kolom th di setiap baris</.
kotak grup dari argumen kanan, dipilih oleh tombol, disediakan oleh yang kiri~.@[
menemukan kunci unik;"0
menautkan kunci ke grup yang dipilihsumber
;"0
bukannya,:
menyimpan 3jq, 100 byte
menggunakan objek untuk output, mengambil argumen baris perintah
$f
plus array pada input standardideobfuscated:
sumber
R ,
7955 byteCobalah online!
24 byte dicukur oleh @JayCe
sumber
cat(z)
cetak sebelum untuk juga mencetak kunci (saya tidak jelas apakah ini diperlukan).Python 3 , 45 byte
Cobalah online!
Mengembalikan pemetaan yang direpresentasikan sebagai lambda anonim.
sumber
Proton , 29 byte
Cobalah online!
-3 byte terima kasih kepada Tn. Xcoder menggunakan currying dan
filter
(TBH saya agak terkejut karenafilter
benar - benar bekerja)sumber
filter
menghemat tiga byte.JavaScript (Node.js) , 29 byte
Cobalah online!
Diperbarui sekarang setelah saya menyadari persyaratan keluaran yang longgar. Ini menggunakan currying sebagai teknik bermain golf, dan itu juga mengembalikan fungsi yang mengambil input
n
dan memetakan itu ke array yang tepat.sumber
Jeli , 5 byte
Cobalah online!
Menghilangkan kunci, tetapi harus jelas.
Argumen 1: i + 1
Argumen 2: a
sumber
Java 10,
13564 byteMengembalikan
Function<Integer, List<int[]>>
menerima input integern
, yang mengembalikan Daftar array (matriks-baris) di mana nilaii
th sama dengan yang diberikann
.Cobalah online.
Penjelasan:
sumber