¿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?


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.

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.