¿Propina? Forma corta de generar hasta 12 caracteres repetidos en JavaScript

8
'---------'
'-'.repeat(9) // longer!

'------------'
(x='----')+x+x
'-'.repeat(12) // same length

¿Hay alguna forma más inteligente de generar cadenas de hasta 12 caracteres repetidos en JavaScript?

Steve Bennett
fuente
1
No lo creo, pero dependiendo del desafío, es posible que pueda jugar múltiples carreras para guardar bytes usando, por ejemplo, RLE
solo ASCII
99
Para el caso especial de comas que puede hacer Array(12)+'', que es más corto que el literal que comienza en 11 comas y luego sigue siendo más corto que repeat.
Martin Ender
1
@SteveBennett a veces solo le importa la longitud de la cadena y no el carácter real, y muchos desafíos de PPCG le permiten usar algunos caracteres ASCII de su elección para la salida.
Martin Ender
1
Si vas a reutilizar repetir, puedes usar un alias.
Shaggy
55
Si realmente no necesita 12 caracteres idénticos, sino una cadena de 12 caracteres, también puede hacerlo 1e11+''.
Arnauld

Respuestas:

2

Desafortunadamente, después de lo que parece una eternidad de buscar documentación, parece que no puedo encontrar ninguna solución que funcione con la restricción de 12 caracteres y se genere para cualquier carácter dado. Sin embargo, hay algunos trucos geniales que uno puede hacer para guardar algunos bytes para casos específicos:

  • 1eL-1+''dará una cuerda, llena de 9s, de L longitud.
  • ''.padEnd(L)dará una cuerda, llena de espacios, de longitud L. Solo es útil cuando L > 10, de lo contrario es demasiado largo. Este se puede encadenar inmediatamente con una función.
  • N/9+''dará una cadena, comenzando con 0.luego seguida por un montón de Ns. Esto no funciona cuando N <1 o N > 8, y el resultado obviamente no contiene los mismos caracteres en todo el camino, pero es bastante cercano y bastante corto.
  • Array(L)+''dará una cadena, llena de comas, de longitud L - 1.
XavCo7
fuente
1
A lo largo de las líneas de su 1/3+''punta, puede repetir un dígito D (excepto 0 y 9) varias veces de manera similar con D/9+''.
kamoroso94
Array(L)+''da L-1longitud, ¿verdad?
Dom Hastings
Lo que significa que para L = 13, el código es de 12 caracteres y la salida es de 12 caracteres, por lo que el mismo que','.repeat(12)
Steve Bennett