Je suis sûr qu'il n'y a pas de meilleure façon de le faire, mais je me suis dit que ça ne pouvait pas faire de mal de demander.
J'en ai assez de taper a='abcdefghijklmnopqrstuvwxyz'
.
Les langues cool ont Range('a'..'z')
ou similaire
Que pouvons-nous proposer avec JS aussi court que possible ??
for(i=97,a='';i<123;){a+=String.fromCharCode(i++)}
est plus long que l'alphabet, mais garantit que je ne foirerai pas quelque part.
J'espère qu'il existe un moyen désagréable de produire un az en moins de 50 caractères.
Je déconne avec i=97;Array(26).map(x=>String.fromChar....i++
mais c'était toujours bien plus long au moment où j'ai rejoint puis divisé le tableau (26) pour être utilisable
Edit: je suis descendu à
[...Array(26)].reduce(a=>a+String.fromCharCode(i++),'',i=97)
60 octets
code-golf
tips
javascript
Charlie Wynn
la source
la source
[...Array(26)].map((q,w)=>String.fromCharCode(w+97))
est de 52 octets et ajoutez 7 autres pour le.join``
[...Array(26)].map((q,w)=>String.fromCharCode(w+97)).join``
Réponses:
Alternative à String.fromCharCode
... si vous êtes satisfait d'un alphabet en minuscules uniquement.
la source
Remarque: Toutes ces techniques affectent la chaîne alphabétique à une variable
a
.Je suis certain à 99% que le moyen le plus court d'y parvenir en JavaScript est en effet:
Mais il existe plusieurs autres méthodes intéressantes. Vous pouvez utiliser la compression de chaînes:
Vous pouvez obtenir la chaîne compressée à partir de
atob`abcdefghijklmnopqrstuvwx`
. Le'yz'
doit être ajouté manuellement car si vous compressez la chaîne entière, alors que le résultat n'est que de 27 octets, il se transformera enabcdefghijklmnopqrstuvwxyw==
.Je pense que le moyen le plus court de le faire par programme est également la méthode que vous avez suggérée:
Vous pouvez le faire avec les fonctionnalités ES6 ( chaînes de modèle
``
, opérateur de propagation...
) si vous voulez:Vous pouvez faire mieux avec une variable au lieu de
.join``
:Ou ES7 avec des compréhensions de tableau , qui est un autre octet plus court:
La création de la variable au préalable enregistre encore un autre octet:
En outre,
String.fromCharCode
accepte plusieurs arguments et les rejoindront automatiquement. Nous pouvons donc jouer à chaque version ES6 jusqu'à 57 octets:Et l'ES7 jusqu'à 55:
Si vous souhaitez en savoir plus sur les parcours de golf, consultez cet ensemble de conseils . Il y a aussi un sur les compréhensions de tableau d'ES7 .
EDIT: Comme l'a souligné edc65, la plupart d'entre eux deviennent plus courts en utilisant
i.toString(36)
au lieu deString.fromCharCode(i)
:Je crois que celui-ci est le plus court possible qui puisse être appelé comme valeur de retour de fonction:
Il est trois octets plus court que le renvoyer manuellement à partir d'une fonction:
Bien sûr,
x=>"abcdefghijklmnopqrstuvwxyz"
bat toujours tout le reste.la source
(f=(i=9)=>++i<36?i.toString(36)+f(i):'')()
Voici une autre approche, une expression ES6 de 51 octets:
50 octets en majuscule bien sûr.
la source
36 octets, en utilisant une astuce que je viens d'apprendre (à partir de ce post: /codegolf//a/176496/64538 ):
window.name
est une chaîne vide par défaut.Bien sûr, cela est encore moins pratique que la solution à 38 octets car elle utilise un nom de variable plus long.
la source
Utilisation de ce qui peut ou non être défini à l'échelle mondiale
39 octets pour les propriétés des objets et la correspondance des tableaux
a-z
48 octets pour un non trié
Set
55 octets pour un trié
Set
67 octets pour une chaîne triée
la source