Pada ECMAScript 2015, JavaScript memiliki 33 kata kunci yang dipesan , seperti break
, const
dan new
, serta 10 kata kunci yang disimpan di masa mendatang , seperti let
dan await
.
Tugas Anda adalah untuk menyatukan jumlah terbesar dari 1 kata kunci khusus 2 berturut-turut yang berbeda saat menulis kode JavaScript fungsional 3 .
- Kata kunci yang dipesan secara berurutan - kata kunci yang dipesan hanya dipisahkan oleh spasi putih dan / atau tanda kurung dan / atau kurung kurawal.
- Kata kunci yang dicadangkan - kata kunci yang dicadangkan atau dicadangkan di masa mendatang pada ECMAScript 2015 . Kata kunci yang dilindungi undang-undang dari standar yang lebih lama dikecualikan, daftar lengkap kata kunci yang diizinkan diberikan di bawah ini.
- Kode fungsional - kode Anda harus dijalankan (nyatakan runtime Anda, jika perlu), akhirnya berhenti, dan tidak menimbulkan kesalahan runtime.
Jika kode Anda memerlukan runtime tertentu, kata kunci yang digunakan tidak boleh kosong di lingkungan yang diberikan.
Daftar kata kunci yang dipesan
Penilaian & contoh
Skor Anda akan sama dengan jumlah terbesar kata kunci khusus yang dipesan berturut-turut.
Dalam kasus skor yang sama, kode sumber terpendek dalam byte menang. Bagian dan string yang dikomentari tidak diperhitungkan dalam kata kunci yang dipesan, tetapi dihitung terhadap jumlah byte.
// score: 3
if (true) 0; else throw function() {}
^------------------^
// score: 2
let foo = typeof typeof void typeof void 0;
^---------^
// score: 0
/* typeof default debugger */
// score: 0, doesn't halt or debugger is no-op, depending on the environment
debugger;
Celah standar berlaku.
Jawaban:
43 kata, 603 byte
Uhm, apakah ini celah? Saya tidak tahu bagaimana ini JS legal, tetapi berfungsi dan menggunakan setiap kata kunci.
sumber
-1
,i+1
,i-1
di atas~0
,-~i
,~-i
ketika saya bisa, hanya karena itu lebih jelas untuk membaca bagi mereka yang tidak terlalu akrab dengan kode-golf dan~
belum. Meskipun saya tentu saja akan selalu menggunakani+~j
dani-~j
untuk golf yang byte tunggali-j-1
dani+j+1
. ;)if(this)return void typeof function(){} else debugger
tidak sulit untuk dibuat, tapi setelah itu semakin cepat jelek. Dan ya, ini benar-benar mengubah kata kunci menjadi pengidentifikasi - tetapi bagi sebagian dari mereka Anda harus menggunakannya untuk dapat menggunakannya (misalnyaenum
). Saya hanya membawanya ke ekstrem, tetapi bukankah itu tentang golf code? : Pobj["break"] = function (){}
dll.37 kata
Kata kunci tidak digunakan:
case
membutuhkan:
const
membutuhkan=
export
membutuhkan mode ketatimport
membutuhkan mode ketatsuper
membutuhkanconstructor
sumber
1 + 2
.1 + 2
. Nilai lengkap dari kode ini adalah jawaban untuk pertanyaan utama tentang kehidupan, alam semesta dan segalanya. Itu rumit . :)43 kata,
302299 bytesumber
enum
.212426 kata, 185 byte+1
1kata berkat Arnauld, dan +1 hingga 12Me21!Dengan asumsi saya mengerti tantangannya, skor ini 24 kata. Kata-kata tanpa tanda kurung, tanda kurung, dan spasi putih:
24 kata, 177 byte
Tanpa "benar" dan "salah", yang tampaknya bukan kata kunci sesuai dengan pertanyaan.
Kata-kata:
sumber
case ... :
ataudefault:
di bagian akhir (karena:
tidak diizinkan di antara kata kunci)for(let _;0;);
+2 kata (tetapi Anda tidak dapat menggunakancase
lagi).switch({}){case{}:{}}
=>switch({}){case{}:;}
? Tidak tahu jika;
kadang-kadang diperlukan3839kata-kata dari "super" ke "const"
Versi golf:
sumber
Uncaught SyntaxError: Unexpected token delete
ketika saya mencoba menjalankan jawaban Anda di konsol Javascript saya di Google Chrome, Bagaimana saya bisa menguji apakah solusi Anda valid?SyntaxError: yield expression is only valid in generators
21 kata
(tidak yakin tentang
let
danawait
)sumber
,
=
dan;
tidak diizinkan sebagai pemisah.43 kata, 300 byte
Lebih mudah dibaca:
Saya harus menggunakan "kata yang dicadangkan sebagai nama metode" untuk menangani
case
(Karena saya sudah menggunakandefault
dengan sayaswtich
),export
danimport
(karena modul-mode selalu ketat, yang mendiskualifikasiwith
)super
(karena itu harus diikuti oleh akses properti atau ditempatkan dalam suatuconstructor
fungsi), danenum
(yang tidak pernah bisa digunakan sama sekali, menjadi kata yang dilindungi tanpa penggunaan tata bahasa yang valid)sumber
super
dapat muncul di awal tanpa nama, tapi terlalu mahal141516 Kata tanpa tanda kurung atau baris baruTerima kasih Bergi untuk +1
sumber
yield
?Uncaught SyntaxError: Unexpected token new
ketika saya tempel di dalam konsol javascript sayafunction
denganfunction*
, sehingga akan dikenali sebagai generator.28 Kata tanpa tanda kurung, 234 Bytes
Menempatkan nama pengenal sebagai nama definisi metode terlalu jelas ( bagi saya setidaknya ), jadi saya mencari urutan berbeda terpanjang berturut-turut dari kata-kata yang disediakan dan spasi putih dalam potongan kode.
Saya harap kode mati setelah a
return
tidak dihitung sebagai celah, tetapi kode tersebut masih dapat dijalankan jika pengidentifikasi yang digunakan dinyatakan.Ini mengeksploitasi fakta bahwa beberapa kata kunci cadangan masa depan hanya dianggap tidak valid dalam mode ketat ES5.1 (tampaknya karena mesin tidak repot-repot untuk memblokir semua kata-kata ES3 masa depan yang dilindungi sehingga ada terlalu banyak kode menggunakan mereka di luar sana di web ).
Demikian pula, token
async
dan yangawait
diperkenalkan di ES8 hanya dianggap sebagai kata kunci dalam mode ketat.sumber
break
dancontinue
ada di sana?Uncaught SyntaxError: Undefined label 'implements'
, apakah jawaban Anda memerlukan runtime tertentu?