Ambil array yang tidak bersarang sebagai input. Ubah menjadi matriks dengan menggunakan metode berikut:
Katakanlah array saya adalah [1, 2, 3, 4, 5]
Pertama, saya ulangi array itu 5 kali: (panjangnya)
[[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5]]
Kemudian, saya membacanya di sepanjang diagonal:
[[1],
[2, 1],
[3, 2, 1],
[4, 3, 2, 1],
[5, 4, 3, 2, 1],
[5, 4, 3, 2],
[5, 4, 3],
[5, 4],
[5]]
Saya meratakan array ini dan membaginya menjadi lima bagian (panjangnya):
[[1, 2, 1, 3, 2],
[1, 4, 3, 2, 1],
[5, 4, 3, 2, 1],
[5, 4, 3, 2, 5],
[4, 3, 5, 4, 5]]
Ini golf kode. Bytes paling sedikit menang.
code-golf
array-manipulation
matrix
Gryphon
sumber
sumber
Jawaban:
05AB1E, 13 byte
Cobalah online!
Penjelasan:
sumber
Jelly , 11 byte
Cobalah online!
Penjelasan
sumber
L
hal-hal aneh, maka saya menggunakan register: / Saya hanya mencobanya lagi dan berfungsi ... pada dasarnya sama jadi saya kira saya hanya akan menghapus milik saya.Python 2,
10596 byte-1 dan -4 dan -4 byte berkat Flp.Tkc
Untuk loop menambahkan item seperti dalam deskripsi, keajaiban nyata terjadi di zip yang berasal dari sini
sumber
JavaScript (ES6) 100
101 105Kurang golf
Uji
sumber
return
. Anda harus memposting tip tentang itu di utas tip ES6.eval
lebih baik bahkan saat ini :(MATL , 17 byte
Cobalah online!
Bagaimana itu bekerja
Penjelasan berikut menggunakan input
[1 2 3 4 5]
sebagai contoh. Untuk memvisualisasikan hasil antara, masukkan%
(simbol komentar) setelah pernyataan dalam kode.Perhatikan bahwa
;
pemisah baris untuk matriks. Begitu[1 2]
juga vektor baris,[1; 2]
adalah vektor kolom, dan[1 0; 0 1]
merupakan matriks identitas 2 × 2.sumber
JavaScript (ES6), 116 byte
Yah, ini awal ...
sumber
R, 84 byte
Membaca input dari stdin dan menghasilkan / mengembalikan R-matrix.
Dijelaskan
Aspek yang paling menarik tentang jawaban ini adalah bagaimana diagonal diambil. Secara umum suatu objek dapat dibagi menggunakan
split
fungsi jika disediakan suatu objek yang mengandung faktor-faktor di mana objek tersebut dibagi menjadi. Untuk membuat faktor-faktor ini kita dapat menggunakancol
danrow
yang mengembalikan matriks yang berisi indeks kolom dan baris masing-masing. Dengan mengambil perbedaan:row(m)-col(m)
kita mendapatkan matriks seperti:di mana setiap diagonal diidentifikasi secara unik. Kami sekarang dapat membagi berdasarkan matriks ini dan mengubahnya menjadi daftar kasar dengan menerapkan
split
:(Perhatikan bagaimana nama masing-masing vektor sesuai dengan nilai-nilai diagonal dalam matriks di atas).
Langkah terakhir adalah meratakan dan mengubahnya menjadi matriks bentuk:
sumber
Mathematica 93 Bytes
Inilah cara saya biasanya menulis kode ini (109 Bytes):
Plot matriks ini memberikan ide yang baik dari struktur karena vektor input meningkat secara berurutan.
Inilah plot matriks dengan vektor input acak. Jelas beberapa struktur masih ada.
sumber
Mathematica, 92 byte
Fungsi yang tidak disebutkan namanya mengambil daftar sebagai argumennya. Mungkin ada struktur lain untuk fungsi seperti itu, tapi mudah-mudahan saya bermain golf struktur ini cukup bagus ....
Bagian pertama
n=NestList[#2,(r=Reverse)@#,(l=Length@#)-1]&
mendefinisikan fungsin
dari dua argumen: yang pertama adalah daftar panjangl
, dan yang kedua adalah fungsi untuk diterapkan ke daftar.n
menerapkan fungsi tersebutl-1
kali ke daftar argumen terbalik, menyimpan semua hasil dalam daftar outputnya. (Mendefinisikanr
danl
sepanjang jalan hanya bermain golf.)n
dipanggil dua kali pada daftar asli, sekali dengan fungsi sedangRest
(drop elemen pertama dari daftar) dan sekali dengan fungsi sedangMost
(drop elemen terakhir). Ini menghasilkan semua daftar yang diinginkan, tetapi seluruh daftar ada dua kali (maka tambahanMost
) dan setengah pertama ada di urutan terbalik (karenanyar[...]
). Akhirnya,~ArrayReshape~{l,l}
lupa struktur daftar saat ini dan memaksanya menjadil
xl
array.sumber
Mathematica, 85 byte
Secara harfiah melakukan langkah-langkah yang disarankan:
Naluri saya mengatakan bahwa harus ada cara pintar
Part
untuk melakukan ini lebih pendek, tetapi setiap upaya yang saya lakukan telah lebih dari 85 byte.sumber
Ruby (110 byte)
The
sort
operasi mungkin tidak diperlukan, tetapi doc untuk Enumerable # group_by tidak menjamin urutan nilai dalam nilai-nilai hash (yang adalah array), tetapi versi saat ini dari Ruby memberikan satu pemesanan harapkan dan memesan saya akan butuhkan jikasort
berada dihapus dari kode saya.Langkah-langkahnya adalah sebagai berikut.
Terakhir,
f.to_a
mengembalikan array yang ditunjukkan sebelumnya.sumber