Tentunya tantangan ini akan sepele dengan fungsi dan perpustakaan yang terpisah, sehingga mereka tidak diizinkan.
Kode Anda harus sesuai dengan spesifikasi skrip ECMA (spesifikasi apa pun akan dilakukan), jadi tidak ada jawaban khusus peramban.
Array harus dapat diakses setelah instantiated.
Saya punya jawaban yang akan saya tahan untuk saat ini.
Catatan: tantangan ini khusus untuk javascript karena sangat tidak nyaman untuk membuat array multi dimensi dalam javascript.
code-golf
javascript
array-manipulation
Shmiddty
sumber
sumber
[10]
[[10]]
?Jawaban:
Javascript ES6, 30
ES6 beraksi :)
sumber
Javascript, 34 byte
Karena tampaknya OK untuk membuat baris sama dengan referensi, saya kira itu OK untuk mengandalkan fakta itu. Ini membantu kita mengurangi satu for-loop dengan membangun tabel pada saat yang sama dengan barisnya. Jadi, inilah kontestan baru saya.
Karena
r[0]
danb[0]
ditimpa selama loop, mereka dapat mengandung sampah. Ini memberi kami slot eksekusi gratis lainnya untuk mengurangi beberapa koma. Sedihnya,r=b=[]
tidak akan berhasil, karena mereka setara dengan-ref.Juga, ini berskala dengan baik (99x99 masih 34 byte), tidak memerlukan ES5 (fungsi baru memiliki nama yang sangat panjang, lagipula), dan sebagai bonus, itu tidak dapat dibaca :-)
sumber
c=[b=[i=10]];while(i--)b[i]=c,c[i]=1
. Seharusnya tahu !!!ECMAScript 6 - 33 Karakter
Menghasilkan array 10x10 "1" s.
Ini menyalahgunakan fakta bahwa string "1111111111" memiliki semua properti yang diperlukan untuk diperlakukan seolah-olah itu adalah array sehingga Anda dapat menggunakan operator spread
...
untuk mengubahnya menjadi array karakter dan kemudian memetakannya ke salinan array dengan setiap elemen mereferensikan "asli".Atau hanya dengan satu nama variabel (untuk 35 karakter):
Atau untuk kebingungan tambahan (tetapi pada 45 karakter)
atau (43 karakter)
sumber
...
operator yang bagus!44 byte
Versi sebelumnya:
sumber
^
untuk!=
45 karakter
Setiap elemen menunjuk ke array yang sama, tetapi spec tidak menyebutkan apa-apa terhadap itu!
sumber
x=
di awalJavascript, 51
Atau jika semua indeks diizinkan untuk menunjuk ke array yang sama:
Javascript, 41
sumber
a[0][1] = 5; console.log(a[1][1])
).JavaScript,
4544 BytesTerbaik yang saya miliki sejauh ini. (Masih berusaha).
Lebih pendek (terima kasih mellamokb!)
sumber
for
hampir selalu lebih disukai daripadawhile
saat bermain golf. Pernyataan dasar adalah panjang yang sama (while()
vsfor(;;)
), tetapifor
memberi Anda lebih banyak fleksibilitas. Dalam hal ini, Anda bisa memasukkanx=[]
inisialisasifor
dan menyimpan satu karakter.Javascript, 47
Karena solusi asli saya telah dikalahkan, sekarang saya akan mempostingnya.
Sayangnya,
0x3FF.toString(2)
tidak seefisien hanya dengan menuliskan string, yang tidak seefisien hanya dengan mendeklarasikan array secara statis.Anda dapat mengurangi satu karakter dengan cara ini ( 46 ):
Anda dapat menyimpan 2 karakter lebih seperti: ( 44 )
Solusi 44 byte lainnya menggunakan penutupan ekspresi fungsi JS 1.8 (hanya atm FF):
sumber
i
dia
seperti ini:a=[i=10]
JavaScript, 57 byte
Sebelum bermain golf:
Catatan: Ini perlu ES5, jadi jangan berharap banyak dari IE.
sumber
eval('a=['+(b=Array(11)).join('['+b.join("1,")+'],')+']')
. Selain memiliki kutipan yang berbeda dan saya memiliki variabel di dalam eval, ini persis samaa=eval("["+Array(11).join("[1,1,1,1,1,1,1,1,1,1],")+"]")
memiliki 5654
Ini sudah dikalahkan, tapi inilah solusi saya:
sumber
x=
sebelumx().map
(atauy=
, dll) agar dapat diakses, kan?39 byte
Menggunakan pemahaman array dalam ECMAScript 7:
sumber
[1,1,1,1,1,1,1,1,1,1]
denganArray(10).fill(1)
mencukur 4 karakter.56 karakter
Jawabannya agak panjang, tetapi akan lebih baik untuk 100x100 dll.
sumber
Javascript, 36 karakter (ECMA 6)
Diuji di browser saya (Firefox di Ubuntu) dan di interpreter Javascript Codecademy
sumber
ES6, 54
Ini bukan yang terpendek, tapi saya pikir saya akan pergi untuk pendekatan yang berbeda dengan apa yang sudah ada di sini.
sumber
a
sudah ada versi yang sepertinya berfungsi. Versi yang diperbarui harus berfungsi dalam FF dan simpul dengan flag --harmony.61 untuk bersenang-senang
sumber
Javascript -
646359 karakterSatu char disimpan dengan menyembunyikan iterator di array.Menyimpan beberapa karakter dengan saran Jans.
Versi yang dapat dibaca:
Ya, ini bukan solusi terpendek, tetapi pendekatan lain tanpa menggunakan
[1,1,1,1,1,1,1,1,1,1]
array readymade .sumber
i-->0
kei--
. Meskipun operator "downto" baik, itu tidak terlalu penting.==0
bisa dicukur oleh dua bit juga. Juga, tinggalkanvar
. Meskipun biasanya bermanfaat, empat byte tidak berguna hanya tidak dapat diterima di sini.Javascript 69 karakter (untuk saat ini)
sumber
JavaScript 73
sumber
r=[10],
tidak melakukan apa-apa saat Anda segera menimpar[0]
. Anda tidak perlu mendeklarasikans
dan hanya bisa melakukannya"1111111111".split("")
tetapi itu adalah 22 karakter sedangkan[1,1,1,1,1,1,1,1,1,1]
hanya 21 karakter.Javascript ES6, 53
Tapi yang ada di array adalah string :)
sumber
Javscript ES6, 53
sumber
JavaScript (ES6), 35 byte
sumber
f=>Array(10).fill(Array(10).fill(1))
(mendefinisikan fungsi anonim) selama 36 byte.