Estoy bastante seguro de que no hay una mejor manera de hacer esto, pero pensé que no podía hacer daño preguntar.
Estoy cansado de escribir a='abcdefghijklmnopqrstuvwxyz'
.
Los idiomas geniales tienen Range('a'..'z')
o similares
¿Qué se nos ocurre con JS que sea lo más corto posible?
for(i=97,a='';i<123;){a+=String.fromCharCode(i++)}
es más largo que el alfabeto, pero garantiza que no me equivoque en ningún lado.
Espero que haya una manera desagradable de producir az en menos de 50 caracteres.
Me metí con i=97;Array(26).map(x=>String.fromChar....i++
pero siempre fue mucho más largo para cuando me uní y luego dividí la matriz (26) para poder usarla
Editar: lo he reducido a
[...Array(26)].reduce(a=>a+String.fromCharCode(i++),'',i=97)
60 bytes
code-golf
tips
javascript
Charlie Wynn
fuente
fuente
[...Array(26)].map((q,w)=>String.fromCharCode(w+97))
es de 52 bytes y agrega otros 7 para el.join``
[...Array(26)].map((q,w)=>String.fromCharCode(w+97)).join``
Respuestas:
Alternativa a String.fromCharCode
... si está satisfecho con un alfabeto en minúsculas solamente.
fuente
Nota: Todas estas técnicas asignan la cadena del alfabeto a la variable
a
.Estoy 99% seguro de que la forma más corta de lograr esto en JavaScript es:
Pero hay varios otros métodos interesantes. Puede usar la compresión de cadena:
Puede obtener la cadena comprimida de
atob`abcdefghijklmnopqrstuvwx`
. La'yz'
hay que añadir manualmente porque si comprime toda la cadena, mientras que el resultado es sólo 27 bytes, que va a salir comoabcdefghijklmnopqrstuvwxyw==
.Creo que la forma más corta de hacerlo mediante programación es también el método que sugirió:
Puede hacerlo con las funciones de ES6 ( cadenas de plantillas
``
, operador de propagación...
) si desea:Puede hacerlo mejor con una variable en lugar de
.join``
:O ES7 con comprensiones de matriz , que es otro byte más corto:
Crear la variable de antemano guarda otro byte:
Además,
String.fromCharCode
acepta múltiples argumentos y los unirá automáticamente. Entonces podemos jugar golf cada versión de ES6 hasta 57 bytes:Y el ES7 uno hasta 55:
Si desea obtener más información sobre los campos de golf, consulte este conjunto de consejos . También hay uno sobre las comprensiones de matriz de ES7 .
EDITAR: como ha señalado edc65, la mayoría de estos se acortan usando en
i.toString(36)
lugar deString.fromCharCode(i)
:Creo que este es el más corto posible que se puede llamar como un valor de retorno de función:
Es tres bytes más corto que devolverlo manualmente desde una función:
Por supuesto,
x=>"abcdefghijklmnopqrstuvwxyz"
aún supera todo lo demás.fuente
(f=(i=9)=>++i<36?i.toString(36)+f(i):'')()
Aquí hay otro enfoque, una expresión ES6 de 51 bytes:
50 bytes en mayúscula, por supuesto.
fuente
36 bytes, usando un truco que acabo de aprender (de esta publicación: /codegolf//a/176496/64538 ):
window.name
es una cadena vacía por defecto.Por supuesto, esto es incluso menos práctico que la solución de 38 bytes, ya que utiliza un nombre de variable más largo.
fuente
Usar lo que puede o no definirse a nivel global
39 bytes para las propiedades del objeto para la coincidencia de matrices
a-z
48 bytes para un sin clasificar
Set
55 bytes para un ordenado
Set
67 bytes para una cadena ordenada
fuente