Gorjeta? Maneira curta de gerar até 12 caracteres repetidos em JavaScript

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

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

Existe alguma maneira mais inteligente de gerar seqüências de caracteres de até 12 caracteres repetidos em JavaScript?

Steve Bennett
fonte
1
Não pense assim, mas dependendo do desafio, você poderá jogar várias corridas para salvar bytes usando, por exemplo, RLE
somente ASCII
9
Para o caso especial de vírgulas, você pode fazer Array(12)+'', que é mais curto que o literal, começando com 11 vírgulas e depois permanece menor que repeat.
Martin Ender
1
@SteveBennett às vezes você se importa apenas com o comprimento da string e não com o caractere real, e muitos desafios de PPCG permitem usar algum caractere ASCII de sua escolha para saída.
Martin Ender
1
Se você estiver reutilizando a repetição, pode usar o alias.
Shaggy
5
Se você realmente não precisa de 12 caracteres idênticos, mas de uma string de 12 caracteres, também pode fazê-lo 1e11+''.
Arnauld 28/05

Respostas:

2

Infelizmente, depois do que parece uma eternidade de pesquisa na documentação, não consigo encontrar nenhuma solução que funcione com a restrição de 12 caracteres e gere para qualquer caractere fornecido. No entanto, existem alguns truques interessantes que podemos fazer para salvar alguns bytes em casos específicos:

  • 1eL-1+''dará uma corda, preenchida com 9s, de comprimento L.
  • ''.padEnd(L)dará uma string, cheia de espaços, de comprimento L. Só é útil quando L > 10, caso contrário, é muito longo. Este pode ser imediatamente encadeado com uma função.
  • N/9+''dará uma string, começando com 0.então seguido por um monte de Ns. Isso não funciona quando N <1 ou N > 8, e o resultado obviamente não contém os mesmos caracteres o tempo todo, mas é bem próximo e muito curto.
  • Array(L)+''dará uma corda, cheia de vírgulas, de comprimento L - 1.
XavCo7
fonte
1
Ao longo das linhas da sua 1/3+''dica, você pode repetir um dígito D (exceto 0 e 9) várias vezes da mesma forma D/9+''.
kamoroso94
Array(L)+''L-1comprimento, certo?
Dom Hastings
O que significa que para L = 13, o código é 12 caracteres e a saída é 12 caracteres, então o mesmo que','.repeat(12)
Steve Bennett