Dalam: Memori yang cukup dan bilangan bulat positif N
Keluar: N-dimensi N ^ N array diisi dengan N, di mana N ^ N berarti N istilah N-oleh-N-oleh-N-oleh ...
Contoh:
1: [1]
yang merupakan array 1D (daftar) dengan panjang 1, berisi 1 tunggal
2: [[2,2],[2,2]]
yang merupakan array 2D (tabel) dengan 2 baris dan 2 kolom, diisi dengan 2s
3: [[[3,3,3],[3,3,3],[3,3,3]],[[3,3,3],[3,3,3],[3,3,3]],[[3,3,3],[3,3,3],[3,3,3]]]
yang merupakan array 3D (kubus) dengan 3 lapisan, 3 baris, dan 3 kolom, diisi dengan 3s
4: [[[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]]],[[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]]],[[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]]],[[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]]]]
5 dan 6: Silakan lihat salah satu jawabannya.
Jawaban:
Python , 32 byte
Cobalah online!
Membuat string seperti
"[[[n]*n]*n]*n"
dengann
perkalian, dan mengevaluasinya sebagai kode Python. Karena evaluasi terjadi dalam lingkup fungsi, nama variabeln
mengevaluasi ke input fungsi.sumber
J, 4 byte
Cobalah online!
Penjelasan
sumber
$~$~
yang setara sambil mengulangi sendiri$~$~
diterjemahkan ke Bahasa Inggris ... MONEY, get more of, MONEY, get more of ...APL (Dyalog APL) , 4 byte
Cobalah online!
sumber
⍴⍨⍴⍨
berfungsi juga, sambil terlihat lebih keren.Mathematica,
2220 bytesumber
R, 26
Ini jawaban yang jelas tapi mungkin ada yang lebih pintar?
sumber
scan()
perlu?n=scan();
denganfunction(n)
tetapi itu membuatnya lebih lama.n
tugas dalamarray
:array(n<-scan(),rep(n,n))
.JavaScript (ES6),
4440 byteDemo
Tampilkan cuplikan kode
sumber
Haskell , 52 byte
Cobalah online!
Terinspirasi oleh jawaban @ nimi , tetapi menggunakan lebih banyak fungsi yang telah ditentukan sebelumnya.
iterate
dan!!
bukannya fungsi bantuan rekursif.filter(>'"').show
untuk memformat daftar string, lalu menghilangkan"
karakter tambahan .sumber
05AB1E (legacy) ,
65 byte-1 terima kasih kepada Kevin Cruijssen
Cobalah online!
sumber
D
dapat dihapus karena input digunakan lagi secara tersirat (tidak yakin apakah ini adalah sesuatu ketika Anda memposting jawabannya, tetapi Anda tidak perlu eksplisitD
lagi sekarang).Oktaf,
3533252320 byteCobalah online!
Berkat @LuisMendo, tersimpan 8 byte
Cobalah online!
Jawaban sebelumnya:
Cobalah online!
sumber
Haskell, 62 byte
Contoh penggunaan:
f 2
->"[[2,2],[2,2]]"
. Cobalah online! .Sistem ketat Haskell mencegah fungsi yang mengembalikan daftar bersarang dari kedalaman yang berbeda, jadi saya membuat hasilnya sebagai string.
Bagaimana itu bekerja:
sumber
f n=iterate(filter(>'#').show.(<$[1..n]))(show n)!!n
.(#0)=show
? Tidak terlalu akrab dengan Haskell(#)0=show
, tetapi semua definisi fungsi harus memiliki jumlah argumen yang sama. Baris kedua (n#l='['...
) membutuhkan dua argumen, jadi baris pertama juga harus memiliki dua argumen.MATL, 8 byte
Cobalah di MATL Online (Saya telah menambahkan beberapa kode yang menunjukkan ukuran sebenarnya dari keluaran karena semua keluaran n-dimensi dalam MATL ditampilkan sebagai matriks 2D di mana semua dimensi> 2 diratakan ke dalam dimensi kedua).
Penjelasan
sumber
Zy
di akhir kode itu memberitahu ukuran sebenarnyaPython 2 , 36 byte
-2 byte terima kasih kepada @CalculatorFeline
Cobalah online!
sumber
~-n
==(n-1)
.CJam , 12 byte
Cobalah online!
Penjelasan
sumber
Jelly , 5 byte
Cobalah online!
Bagaimana?
sumber
Java
979695 byteTidak Disatukan:
sumber
i<=1
dengani<2
?(n,i)->{...}
JavaScript (ES6), 38 byte
Versi haus memori ini adalah 45 byte:
sumber
Utilitas Bash + GNU, 117 byte
Cobalah online!
Program ini pada dasarnya dihitung dari 0 hingga (n ^ n) -1 di basis n, di mana n adalah input. Untuk setiap basis-n angka k dalam hitungan, ia melakukan hal berikut:
(Nilai n = 1 perlu ditambahkan tanda kurung sebagai kasus khusus. Nilai input ini juga menghasilkan beberapa output ke stderr, yang dapat diabaikan berdasarkan aturan PPCG standar.)
Mungkin ada cara yang lebih singkat untuk mengimplementasikan ide ini.
Contoh dijalankan:
sumber
Jelly , 4 byte
Cobalah online!
Hal yang sama tetapi dengan monad tunggal dan tidak perlu pemisah rantai:
4 byte
sumber
Jelly , 5 byte
Cobalah online!
Penjelasan
sumber
Python 3 ,
57535038 byteCobalah online!
-4 byte terima kasih kepada @CalculatorFeline
34 byte:
Perlu disebut sebagai
f(4,4)
sumber
c>1
denganc
untuk menghemat 1 byte. (Penurunan harga, hentikan ruang deduplikasi di seluruh`
)c>0
dalam kasus khusus ini.<space>n
. Masalah terpecahkan dan bonus – lebih banyak byte disimpan! : D (Jadi spasi di akhir kode sebaris mungkin, tetapi bukan permulaan? Itu aneh ...) TIO linkRuby,
2826 byteTerima kasih kepada Cyoce karena telah menghemat 2 byte!
Dicuri tanpa malu-malu dari xnor 's jawaban yang sangat baik .
sumber
Ruby, 27 byte
Hanya 1 byte lebih banyak tetapi menggunakan pendekatan yang berbeda dan bukan trik 'eval' dari jawaban Python xnor yang luar biasa.
sumber
Perl 6 , 25 byte
Dimulai dengan
n
, dan secara iteratif menerapkan waktu transformasi "repeat n times"n
, setiap kali menciptakan level tambahan dariList
nesting.Cobalah online!
sumber
$_
sebagai gantinya untuk menyimpan byte$_
parameter blok dalam, jadi saya tidak bisa menggunakannya sebagai parameter blok luar juga.$n
dan$_
selalu memiliki nilai yang sama. Cobalah online!PHP,
7062 byteIni adalah yang paling sederhana yang bisa saya lakukan.
Mengambil input sebagai argumen pertama dan mencetak array yang dihasilkan di layar.
Terima kasih kepada @ user59178 karena telah menyelamatkan saya 8 byte !
sumber
$l
. Menjatuhkan$i=0,
& mengganti$l
dengan$n
menghemat 7 byte. Byte tambahan dapat disimpan dengan tidak menetapkan$F
, menetapkan$n
dalam kondisi dan menggunakan ternary$F?:$n
diarray_fill()
Clojure, 36 byte
Iterasikan fungsi yang mengulangi argumennya
n
kali, menghasilkan urutan elemen yang tak terbatas dan kemudian mengambiln
elemennya.Lihat online
sumber
Rebol, 45 byte
sumber
Batch, 141 byte
Batch sebenarnya tidak memiliki array, jadi ini hanya mencetak representasi string dari array. Penjelasan: Dua baris pertama membangun pola berulang
N
.
s dipisahkan olehN-1
,
s dalam variabelt
. Baris keempat kemudian menggunakan ini sebagai waktu pola substitusiN
untuk membuatN
array -dimensi. Dobelcall
diperlukan karena cara kerjafor
danset
pernyataan. Pertama,for
perintah tersebut menggantikan variabel. Seperti yang terjadi, semua saya%
tanda-tanda dua kali lipat, jadi ini tidak apa-apa kecuali tanda kutip mereka semua, sehinggacall call set s=[%%t:.=%s%%%]
. Itu kemudian mengulangi waktu pernyataan yang dihasilkanN
. Setiap kali,call
perintah itu menggantikan variabel. Pada titik ini,s
variabel hanya memiliki satu set%
s, jadi itu diganti, menghasilkan (misalnya)call set s=[%t:.=[2,2]%]
. Panggilan batin kemudian menggantikant
variabel, menghasilkan (misalnya)set s=[[2,2],[2,2]]
, melakukan tugas yang diinginkan. Nilai akhir daris
kemudian dicetak.sumber
Clojure, 49 byte
Bukan contoh Clojure terpendek, tetapi saya menghibur diri dengan mengutip dan tidak mengutip.
sumber
I , 7 byte
Saya mendapat ini dari rekan saya, pencipta saya.
#Bb
#
fungsi salin B ound ke b indinghp
h ook argumen ke (kanan) fungsi p ower (repeat)h~
h ook argumen ke kiri~
(dari seluruh fungsi yang dihasilkan)Cobalah online!
sumber
Common Lisp,
128 102 9579 byteCobalah online!
sumber