Diberikan daftar bilangan bulat unik positif yang tidak disortir, pilah secara minimal ke dalam matriks 2D. Daftar input dijamin panjang komposit, yang berarti matriks output tidak harus persegi, tetapi n x m
dengan ukuran n,m > 1
.
"Sortasi minimal" di sini berarti yang berikut:
- Sortir daftar dalam urutan menaik.
- Kompak output matriks sebanyak mungkin - meminimalkan jumlah dimensi dari matriks (misalnya, untuk
20
elemen masukan sebagai input,5x4
atau4x5
matriks output yang diperlukan, dan tidak2x10
). - Kompak angka yang diurutkan sejauh mungkin ke kiri atas matriks, dimulai dengan elemen pertama dalam daftar yang diurutkan.
- Ini dapat dianggap sebagai pengurutan daftar, kemudian mengirisnya sepanjang matriks anti-diagonal, dimulai dari kiri atas.
Contoh:
Untuk input 1..20
output adalah matriks 5x4 atau 4x5 sebagai berikut:
1 2 4 7 11
3 5 8 12 15
6 9 13 16 18
10 14 17 19 20
1 2 4 7
3 5 8 11
6 9 12 15
10 13 16 18
14 17 19 20
Untuk input [3, 5, 12, 9, 6, 11]
output adalah 2x3 atau 3x2 sebagai berikut
3 5 9
6 11 12
3 5
6 9
11 12
Untuk input [14, 20, 200, 33, 12, 1, 7, 99, 58]
, output adalah 3x3 sebagai berikut
1 7 14
12 20 58
33 99 200
Untuk input 1..10
, output harus 2x5 atau 5x2 sebagai berikut
1 2 4 6 8
3 5 7 9 10
1 2
3 4
5 6
7 8
9 10
Untuk input [5, 9, 33, 65, 12, 7, 80, 42, 48, 30, 11, 57, 69, 92, 91]
output adalah 5x3 atau 3x5 sebagai berikut
5 7 11 33 57
9 12 42 65 80
30 48 69 91 92
5 7 11
9 12 33
30 42 57
48 65 80
69 91 92
Aturan
- Input dapat diasumsikan sesuai dengan tipe integer asli bahasa Anda.
- Input dan output dapat diberikan dengan metode apa pun yang mudah .
- Program lengkap atau fungsi dapat diterima. Jika suatu fungsi, Anda dapat mengembalikan output daripada mencetaknya.
- Celah standar dilarang.
- Ini adalah kode-golf sehingga semua aturan golf biasa berlaku, dan kode terpendek (dalam byte) menang.
code-golf
array-manipulation
sorting
matrix
AdmBorkBork
sumber
sumber
15
case test elemen.Jawaban:
Jelly ,
242220 byteCobalah online!
Disimpan 2 byte berkat @ Jonathan Allan .
Penjelasan
sumber
L%J¬TżṚ$
->LÆDżṚ$
harus menyelamatkan dua kurasapSÞỤs
.Python 2 ,
160158153151 byte-2 byte terima kasih kepada Erik the Outgolfer
-2 byte terima kasih kepada Tn. Xcoder
Cobalah online! atau Coba semua test case
sumber
max(0,n-x)
untuk -2 byte.R
11095 byteCobalah online!
Bagaimana itu bekerja
Giuseppe menyimpan 15 byte (!) Kekalahan dengan trik-trik berikut
length(x)
dengansum(x|1)
(-1 byte)floor()
tidak diperlukan sebagai:
putaran ke bawah (-7)^.5
lebih pendek darisqrt()
(-3)col(X) + row(X)
alih-alihouter
(baik!)t(X)
meskipun - mengecewakan;)Solusi asli
Itu akan terlihat lebih mewah dengan
outer
digantikan olehrow(X)+col(X)
, tetapi itu akan perlu untuk menginisialisasi matriks keluaranX
terlebih dahulu.Cobalah online!
sumber
JavaScript (ES6), 172 byte
Penjelasan
Uji Kasus
Tampilkan cuplikan kode
sumber
Perl 5 , 132 byte
Cobalah online!
Subroutine mengembalikan array 2-D. TIO link termasuk kode footer untuk menampilkan hasil tes.
sumber
Oktaf , 151 byte
Menggunakan tiga jenis konstruksi loop yang berbeda.
Cobalah online!
Belum dibuka:
sumber
'
dinnz(v')
diperlukan?'
tidak diperlukan jika saya membungkus ekspresi rentang, misalnya1:20
, di sekitar tanda kurung ([1:20]
) di situs panggilan (untuk membuatnya menjadi vektor yang sebenarnya). Rupanya di Octave, operator usus besar tidak membuat vektor , tetapi rentang konstan yang mengambil lebih sedikit ruang dalam memori. Untuk beberapa alasan,nnz()
tidak bekerja dengan tipe itu, tetapi mentransposasikan kisaran konstan menghasilkan vektor, sehingga ia bekerja dengan tanda kutip. Memanggil fungsi dengan vektor aktual menghilangkan kebutuhan untuk'
.nnz(1:20)
tidak bekerja mungkin bug (max(1:20)
,sum(1:20)
dll yang valid).nnz
. Apakah Anda ingin melakukannya sendiri, atau haruskah saya?Sekam , 15 byte
Ini bekerja dengan brute force, sehingga test case yang lebih lama mungkin habis. Cobalah online!
Penjelasan
sumber
C (gcc) , 269 byte
Cobalah online!
sumber
JavaScript (ES6), 233 byte
Penjelasan
sumber
Java 10,
199188186 byteCobalah online.
Berdasarkan jawaban saya di sini .
Penjelasan:
sumber