Tulis sepotong kode JavaScript yang memanggil alert
dengan array yang berisi 50 angka Fibonacci pertama secara berurutan. Anda hanya dapat menggunakan karakter berikut: +!()[]
.
Sebagai referensi, kode Anda harus secara fungsional sama dengan yang berikut:
var fib = [], a = 1, b = 1;
for (var _ = 0; _ < 50; _++) {
fib.push(a);
var t = a; a = b; b = t + a;
}
alert(fib);
Anda tidak boleh mengasumsikan konten apa pun di halaman web - program Anda akan dijalankan di konsol about:blank
. Demikian pula, Anda tidak boleh 'menipu' dan menyimpan pengaturan apa pun di cookie, pengaturan atau data lainnya. Solusi Anda harus bekerja pada setiap pemasangan baru Google Chrome atau Firefox terbaru pada OS apa pun. Jika ragu, cobalah tetap se portable mungkin.
Kode sumber terkecil dalam byte menang.
Jawaban:
7.576 karakter
Firefox / Safari 9 (WebKit Nightly)
Byte-saver utama adalah
fill()
Sebagian besar karakter non-alfanumerik (terutama
;
dan>
) sangat mahal jadi saya benar-benar mencoba untuk meminimalkan penggunaannya.Naskah
Chrome (11.605)
Asli:
;
sangat mahal.Script: Pastebin .
sumber
falsefalse
sebagai nama variabel adalah karakter kurang darit
atauf
atau apa, mungkin bisa membantu Anda mencukur beberapa off! Sayang kita tidak bisa menghasilkan angka lebih dari 50 meskipun karena50
lebih pendek dari48
....pop()
,.shift()
dan.splice()
tetapi mereka semua menambahkan terlalu banyak karakter! Berpikir @ vihan sudah meliputnya! Jikaalert()
pada setiap tahap dapat diterima, mungkin saja untuk melewati kebalikannya sepenuhnya, tapi saya merasa itu agak melanggar aturan ...15.943 byte
Saya hanya hardcoded nilai-nilai dan menggunakan JScrewit Compiler .
Kode Asli:
Kode JSFuck:
Meskipun hardcoding lebih panjang dari generator golf dalam js normal, jumlahnya (relatif; P) mudah diwakili dalam JsFuck.
sumber
302871241912288 BytesGolf asli:
Unshift dan Reverse lebih murah daripada Push untuk sedikit menghemat:
Tidak cocok! Batas 30K karakter! Pastebin di sini.Saya mencoba jsfuck.com tapi itu memberi saya 62399 byte.
Mengikuti saran dari Stefnotch, hanya mengubah kompatibilitas ke Chrome dan memangkas jumlah secara dramatis. JSFuck dihasilkan oleh jscrew.it :
sumber
12.2851218312069113991125211105 BytesKode asli:
Setelah menghapus titik koma dan menggantinya dengan '\ n': (Terima kasih Dom Hasting .)
Menggunakan 'concat' alih-alih 'push' untuk menyimpan beberapa byte:
Kode yang diperbarui:
Menghapus ruang kosong:
Menghapus ruang kosong setelah '+':
Kode JSFuck:
sumber
falsefalse
danfalse0
sebagai nama variabel, bukant
danf
dan\n
lebih sedikit karakter daripada;
(menurut jscrew.it pula) sehingga Anda mungkin dapat menggantikannya untuk disimpan juga. Jika mungkin untuk menampilkan 52 angka pertama, 50 juga setengah dari ukuran 48 ... Semoga itu bisa membantu!for(i=0;i<48;)
danf.push
untuk lebih dari penghematan dan mengganti nama variabel pasti akan menghemat beberapaf
=(![]+[])[+[]]
vs.falsefalse
=![]+[![]]
dani
=([![]]+[][[]])[+!![]+[+[]]]
vs.false0
=![]+[+[]]
.concat
adalah satu-satunya cara lain yang bisa kulihat untuk mengurangi metode itu juga!Firefox, 7446 bytes
Sumber:
sumber
14.097 Bytes
Pertama kali melakukan salah satu dari ini atau pengkodean dalam bahasa ini jadi saya akan kembali dan melihat apakah saya bisa membuatnya lebih kecil
Kode asli:
Kode JSFuck:
sumber