Saya cukup yakin tidak ada cara yang lebih baik untuk melakukan ini tetapi saya pikir tidak ada salahnya untuk bertanya.
Saya lelah mengetik a='abcdefghijklmnopqrstuvwxyz'
.
Bahasa keren miliki Range('a'..'z')
atau serupa
Apa yang bisa kita dapatkan dengan JS yang sesingkat mungkin ??
for(i=97,a='';i<123;){a+=String.fromCharCode(i++)}
lebih panjang dari sekedar alfabet - tetapi menjamin saya tidak mengacau di suatu tempat.
Saya berharap ada cara yang agak licik untuk menghasilkan az dalam kurang dari 50 karakter.
Saya mengacau i=97;Array(26).map(x=>String.fromChar....i++
tapi itu selalu jauh lebih lama pada saat saya bergabung kemudian membagi array (26) agar bisa digunakan
Sunting: Saya sudah turun ke
[...Array(26)].reduce(a=>a+String.fromCharCode(i++),'',i=97)
60 byte
code-golf
tips
javascript
Charlie Wynn
sumber
sumber
[...Array(26)].map((q,w)=>String.fromCharCode(w+97))
adalah 52 byte dan tambahkan 7 lagi untuk.join``
[...Array(26)].map((q,w)=>String.fromCharCode(w+97)).join``
Jawaban:
Alternatif untuk String.fromCharCode
... jika Anda senang dengan huruf kecil saja.
sumber
Catatan: Semua teknik ini menetapkan string alfabet ke variabel
a
.Saya yakin 99% bahwa cara terpendek untuk mencapai ini dalam JavaScript adalah:
Tetapi ada beberapa metode menarik lainnya. Anda dapat menggunakan kompresi string:
Anda bisa mendapatkan string terkompresi dari
atob`abcdefghijklmnopqrstuvwx`
. The'yz'
harus ditambahkan secara manual karena jika Anda kompres seluruh string, sedangkan hasilnya adalah hanya 27 byte, itu akan berubah sebagaiabcdefghijklmnopqrstuvwxyw==
.Saya percaya cara terpendek untuk melakukannya secara terprogram juga metode yang Anda sarankan:
Anda dapat melakukannya dengan fitur ES6 ( string template
``
, spread operator...
) jika Anda ingin:Anda bisa melakukan yang lebih baik dengan variabel alih-alih
.join``
:Atau ES7 dengan pemahaman array , yang merupakan byte lain yang lebih pendek:
Membuat variabel sebelumnya menyimpan byte lain:
Juga,
String.fromCharCode
menerima beberapa argumen dan secara otomatis akan bergabung dengannya. Jadi kita bisa melakukan golf setiap versi ES6 hingga 57 byte:Dan ES7 satu ke 55:
Jika Anda ingin mempelajari lebih lanjut tentang rentang golf, lihat serangkaian kiat ini . Ada juga satu tentang pemahaman array ES7 .
EDIT: Seperti yang ditunjukkan oleh edc65, sebagian besar ini menjadi lebih pendek
i.toString(36)
daripada menggunakanString.fromCharCode(i)
:Saya percaya ini adalah yang sesingkat mungkin yang dapat disebut sebagai nilai fungsi pengembalian:
Ini tiga byte lebih pendek daripada secara manual mengembalikannya dari suatu fungsi:
Tentu saja,
x=>"abcdefghijklmnopqrstuvwxyz"
masih mengalahkan yang lainnya.sumber
(f=(i=9)=>++i<36?i.toString(36)+f(i):'')()
Berikut pendekatan lain, ekspresi ES6 51 byte:
50 byte dalam huruf besar tentu saja.
sumber
36 byte, menggunakan trik yang baru saya pelajari (dari posting ini: /codegolf//a/176496/64538 ):
window.name
adalah string kosong secara default.Tentu saja, ini bahkan kurang praktis daripada solusi 38-byte karena menggunakan nama variabel yang lebih panjang.
sumber
Menggunakan apa yang mungkin atau tidak dapat didefinisikan pada lingkup global
39 byte untuk properti objek ke pencocokan array
a-z
48 byte untuk yang tidak disortir
Set
55 byte untuk diurutkan
Set
67 byte untuk string yang diurutkan
sumber