Tulis sebuah program atau fungsi yang, diberi bilangan bulat n
, membangun array dengan n
dimensi n
panjang, di mana setiap elemen merupakan pengidentifikasi koordinatnya sendiri. Yaitu, mulai dengan satu array, isi dengan n
array, di mana masing-masing berisi n
lebih banyak array, hingga kedalaman n-1
. Elemen-elemen dari array terdalam adalah koordinat yang menggambarkan di mana mereka berada dalam array penuh.
Beberapa contoh kalau-kalau penjelasan saya membingungkan.
n = 1
["1"]
n = 2
[
["11", "12"],
["21", "22"]
]
n = 3
[
[
["111","112","113"],
["121","122","123"],
["131","132","133"]
],
[
["211","212","213"],
["221","222","223"],
["231","232","233"]
],
[
["311","312","313"],
["321","322","323"],
["331","332","333"]
]
]
Di sini, "321" berarti itu adalah elemen ke-1 dari elemen ke-2 dari array ke-3.
Aturan:
- Koordinat dan dimensi (
n
) dapat diindeks 0 atau 1 - Anda dapat mengasumsikan
n
satu digit, di bawah 10 untuk kedua opsi pengindeksan untuk mencegah output yang ambigu - IO fleksibel.
- Khususnya, koordinat dapat berupa array, string, dll. Asalkan jelas. "321" => [3,2,1]
- Output dapat berupa bilangan bulat di basis 10 dengan atau tanpa nol di depan.
- Koordinat dapat dalam urutan terbalik jika Anda inginkan, asalkan konsisten. "321" => "123"
- Output tidak harus berupa struktur array dalam bahasa Anda. Selama ada penanda yang jelas berbeda untuk awal array, akhir array dan untuk memisahkan elemen.
- Output untuk
n=1
hanya bisa 1 - Jika output Anda tidak khas, pastikan untuk menjelaskan formatnya.
- Ini adalah kode-golf sehingga solusi terpendek dalam setiap bahasa menang!
data L a = L [L a] | E a
.Int -> [String]
atauInt -> [[String]]
dan sebagainya, tergantung pada apa inputnyaJawaban:
Dyalog APL ,
53 byte-2 byte terima kasih kepada FrownyFrog
Cobalah online!
⍳
memberikan semua indeks yang diberikan bentuk array. mis. 2 3 .⍴
membentuk kembali arg kanan menjadi ukuran arg kiri.⍨
membuat keduanya menjadi arg yang tepat.sumber
Python 3 , 56 byte
Cobalah online!
Mr. Xcoder menyimpan 2 byte beralih ke Python 3 untuk membongkar bintang.
sumber
f=lambda n,*l:len(l)//n*l or[f(n,*l,k)for k in range(n)]
bekerja selama 56 byte.Bahasa Wolfram (Mathematica) ,
3222 byte-10 byte terima kasih kepada @alephalpha
Cobalah online!
sumber
J , 18 byte
Cobalah online!
Solusi berulang, tidak ada produk kartesian bawaan. Inilah yang terlihat seperti puncak J.
sumber
Jelly ,
87 byteCobalah online!
Penjelasan
Gunakan argumen 2 sebagai contoh.
Jika
¡
tidak bervariasi itu argumen yang tepat tentang iterasi untuk angka dua maka ini akan menjadi 4 byte:ṗs³¡
sumber
1
valid?J, 13 byte
Cobalah online!
Menarik, ini jauh lebih lama daripada jawaban APL (meskipun itu mungkin ketidakmampuan saya untuk melihat terjemahan yang lebih baik)
penjelasan
sumber
#.inv
sangat pintar, +1.MATLAB,
928955 byteSaya memiliki jawaban yang berbeda setelah membaca kembali aturan tantangan, tetapi saya akan meninggalkan upaya sebelumnya di bawah karena berbeda dan masih menyenangkan untuk dilihat.
Penjelasan
Ini menghasilkan array n-dimensi string yang 0 diindeks.
Jawaban Sebelumnya (89 byte)
Golf pertamaku! Ini mungkin dapat dikurangi lebih banyak tetapi saya pikir saya akan memposting apa yang saya dapatkan.
Penjelasan
Keluaran x pada akhirnya memberikan solusi
Mirip dengan posting MATLAB lainnya, outputnya adalah array n-dimensional, kecuali ia menggunakan angka untuk menampilkan koordinat. Ini bekerja untuk nilai apa pun, meskipun karena loop buruk di MATLAB itu mulai melambat secara signifikan di sekitar n = 8.
Sunting: -2 bytes terima kasih kepada Luis Mendo. Juga menghapus titik koma akhir untuk mencetak output.
sumber
length
dengannnz
menyimpan beberapa byte. Juga, sesuai aturan PPCG, kode harus menghasilkan beberapa output aktual, biasanya dengan menampilkannya dalam STDOUT (itu tidak cukup untuk memiliki output yang disimpan dalam variabel), atau itu harus menjadi fungsi yang mengembalikan outputKarat ,
201176167166154 byteCobalah online!
Jenis output adalah tipe penjumlahan dengan dua varian karena bahasa diketik dengan ketat. Ini bisa berupa
L
, yang merupakan tipe daftar yang berisi tipe penjumlahan ini atauS
yang merupakan tipe hasil (string). Hasilnya bisa seperti ini.Juga, diformat ulang menggunakan
rustfmt
:sumber
R , 102 byte
Cobalah online!
which
indeks arraysumber
which
adalah apa yang saya cari, terima kasih! Disimpan 9 byteJava 10, 144 byte
Solusinya adalah metode
f
. Ini menghasilkan representasi string dari array.Cobalah secara Online
Tidak disatukan
Ucapan Terima Kasih
sumber
Object[]
denganvar
. Juga, saya pikirelse
blok ini tidak perlu, seperti yang adareturn
diif
blok.05AB1E , 7 byte
Cobalah online!
Penjelasan
sumber
JavaScript (Node.js) ,
626058 byteCobalah online! Output diindeks 0. Sunting: Disimpan 2 byte berkat @ JoKing dan 2 byte selanjutnya berkat @Arnauld.
sumber
MATLAB,
116108104 byteSaya merasa seperti harus ada cara yang lebih singkat untuk melakukan ini, mengingat afinitas MATLAB terhadap matriks multi-dimensi ... Terima kasih kepada Luis untuk 4 byte dari beberapa penyerahan pendek
Penjelasan
Outputnya adalah array sel n-dimensi, di mana setiap elemen adalah array dari nilai koordinat. Bekerja untuk apa pun
n
tanpa ambiguitas karena output array numerik, selaman^(n+1)
array elemen dapat disimpan dalam RAM!sumber
Arang , 26 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Masukan
n
.Hasilkan semua
nⁿ
n
angka -digit di pangkalann
.Bagi mereka
n
kali menjadin
array -dimensi di mana setiap dimensi berukurann
.Cetak array. Format output default adalah setiap elemen pada barisnya sendiri, kemudian setiap blok
n
garis diakhiri oleh baris kosong, lalu setiap blokn
blokn
garis diakhiri oleh baris kosong kedua, dan seterusnya hinggan-1
baris kosong di tingkat atas .sumber
Jelly , 7 byte
Cobalah online!
sumber