Trinkgeld? Kurzer Weg, um bis zu 12 wiederholte Zeichen in JavaScript zu generieren

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

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

Gibt es eine cleverere Möglichkeit, Zeichenfolgen mit bis zu 12 wiederholten Zeichen in JavaScript zu generieren?

Steve Bennett
quelle
1
Denken Sie nicht so, aber abhängig von der Herausforderung können Sie möglicherweise mehrere Läufe spielen, um Bytes zu sparen, indem Sie z. B. RLE
ASCII - nur
9
Für den speziellen Fall von Kommas können Sie dies tun Array(12)+'', der kürzer als das Literal ab 11 Kommas ist und dann kürzer als bleibt repeat.
Martin Ender
1
@SteveBennett Manchmal interessiert Sie nur die Zeichenfolgenlänge und nicht das tatsächliche Zeichen, und bei vielen PPCG-Herausforderungen können Sie ein ASCII-Zeichen Ihrer Wahl für die Ausgabe verwenden.
Martin Ender
1
Wenn Sie die Wiederholung wiederverwenden, können Sie sie als Alias ​​verwenden.
Shaggy
5
Wenn Sie nicht wirklich 12 identische Zeichen benötigen, sondern eine Zeichenfolge mit 12 Zeichen, können Sie dies auch tun 1e11+''.
Arnauld

Antworten:

2

Leider kann ich nach einer scheinbar ewigen Suche in der Dokumentation keine Lösung finden, die mit der 12-Zeichen-Einschränkung funktioniert und für ein bestimmtes Zeichen generiert wird. Es gibt jedoch einige nette Tricks, mit denen Sie einige Bytes für bestimmte Fälle speichern können:

  • 1eL-1+''gibt eine mit 9s gefüllte Zeichenfolge von L Länge.
  • ''.padEnd(L)gibt eine mit Leerzeichen gefüllte Zeichenfolge von L Länge. Es ist nur nützlich, wenn L > 10 ist, sonst ist es zu lang. Dieser kann sofort mit einer Funktion verkettet werden.
  • N/9+''gibt eine Zeichenfolge, beginnend mit, 0.gefolgt von einem Bündel von Ns. Dies funktioniert nicht, wenn N <1 oder N > 8 ist, und das Ergebnis enthält offensichtlich nicht die gleichen Zeichen auf dem gesamten Weg, sondern ziemlich nah und ziemlich kurz.
  • Array(L)+''gibt eine mit Kommas gefüllte Zeichenfolge der Länge L - 1.
XavCo7
quelle
1
Entlang der 1/3+''Spitze Ihres Tippes können Sie eine Ziffer D (außer 0 und 9) einige Male ähnlich mit wiederholen D/9+''.
Kamoroso94
Array(L)+''gibt L-1Länge, richtig?
Dom Hastings
Was bedeutet, dass für L = 13 der Code 12 Zeichen und die Ausgabe 12 Zeichen ist, also dasselbe wie','.repeat(12)
Steve Bennett