Я почти уверен, что нет лучшего способа сделать это, но подумал, что не мешало бы спросить.
Я устал печатать a='abcdefghijklmnopqrstuvwxyz'
.
Крутые языки имеют Range('a'..'z')
или похожие
Что мы можем придумать с JS, который как можно короче ??
for(i=97,a='';i<123;){a+=String.fromCharCode(i++)}
это больше, чем просто алфавит - но гарантирует, что я никуда не облажусь.
Я надеюсь, что есть отвратительный, немного изменчивый способ создания азбуки длиной менее 50 символов.
Я возился с i=97;Array(26).map(x=>String.fromChar....i++
но к тому времени, когда я присоединился, это всегда было намного дольше, а затем разделял массив (26), чтобы его можно было использовать
Редактировать: я получил это до
[...Array(26)].reduce(a=>a+String.fromCharCode(i++),'',i=97)
60 байт
code-golf
tips
javascript
Чарли Винн
источник
источник
[...Array(26)].map((q,w)=>String.fromCharCode(w+97))
составляет 52 байта и добавьте еще 7 для.join``
[...Array(26)].map((q,w)=>String.fromCharCode(w+97)).join``
Ответы:
Альтернатива String.fromCharCode
... если вас устраивает только строчный алфавит.
источник
Примечание. Все эти методы назначают строку алфавита переменной
a
.Я на 99% уверен, что самый короткий способ достичь этого в JavaScript действительно:
Но есть несколько других интересных методов. Вы можете использовать сжатие строк:
Вы можете получить сжатую строку из
atob`abcdefghijklmnopqrstuvwx`
.'yz'
Должны быть добавлены вручную , потому что если сжать всю строку, а результат всего 27 байт, то получится , какabcdefghijklmnopqrstuvwxyw==
.Я считаю, что самый короткий способ сделать это программно - это также метод, который вы предложили:
Вы можете сделать это с помощью функций ES6 ( строки шаблона
``
, оператор распространения...
), если хотите:Вы можете сделать лучше с переменной вместо
.join``
:Или ES7 с массивами , что на другой байт короче:
Предварительное создание переменной сохраняет еще один байт:
Кроме того,
String.fromCharCode
принимает несколько аргументов и автоматически присоединится к ним. Таким образом, мы можем сыграть в гольф каждую версию ES6 до 57 байт:И ES7 один до 55:
Если вы хотите узнать больше о полях для гольфа, ознакомьтесь с этим набором советов . Есть также один из понимания массивов ES7 .
РЕДАКТИРОВАТЬ: Как указало edc65, большинство из них становятся короче, используя
i.toString(36)
вместоString.fromCharCode(i)
:Я считаю, что это самое короткое из возможных значений, которое можно вызвать как возвращаемое значение функции:
Это на три байта короче, чем возвращение вручную из функции:
Конечно,
x=>"abcdefghijklmnopqrstuvwxyz"
все еще бьет все остальное.источник
(f=(i=9)=>++i<36?i.toString(36)+f(i):'')()
Вот еще один подход, 51-байтовое выражение ES6:
50 байтов в верхнем регистре, конечно.
источник
36 байт, используя трюк, о котором я только что узнал (из этого поста: /codegolf//a/176496/64538 ):
window.name
пустая строка по умолчанию.Конечно, это даже менее практично, чем 38-байтовое решение, поскольку оно использует более длинное имя переменной.
источник
Использование того, что может или не может быть определено в глобальном масштабе
39 байтов для свойств объекта для сопоставления массива
a-z
48 байтов для несортированного
Set
55 байт для отсортированного
Set
67 байт для отсортированной строки
источник