9
\$\begingroup\$
'---------'
'-'.repeat(9) // longer!

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

Is there any cleverer way of generating strings of 12 repeated characters in JavaScript?

\$\endgroup\$
8
  • 1
    \$\begingroup\$ Don't think so but depending on the challenge you may be able to golf multiple runs to save bytes using e.g. RLE \$\endgroup\$ Commented May 28, 2017 at 11:46
  • 9
    \$\begingroup\$ For the special case of commas you can do Array(12)+'', which is shorter than the literal starting at 11 commas and then remains shorter than repeat. \$\endgroup\$ Commented May 28, 2017 at 11:51
  • 1
    \$\begingroup\$ @SteveBennett sometimes you only care about the string length and not the actual character, and many PPCG challenges allow you to use some ASCII character of your choice for output. \$\endgroup\$ Commented May 28, 2017 at 12:15
  • 1
    \$\begingroup\$ If you're going to be reusing repeat, you can alias it. \$\endgroup\$ Commented May 28, 2017 at 12:15
  • 5
    \$\begingroup\$ If you don't really need 12 identical characters but rather a 12-character string, you can also do 1e11+''. \$\endgroup\$ Commented May 28, 2017 at 12:47

1 Answer 1

3
\$\begingroup\$

Unfortunately, after what seems an eternity of searching documentation, I can't seem find any solution that will work with the 12-character constraint and generate for any given character given. However, there are a few neat tricks one can do to save some bytes for specific cases:

  • 1eL-1+'' will give a string, filled with 9s, of L length.
  • ''.padEnd(L) will give a string, filled with spaces, of L length. It's only useful when L > 10, otherwise it's too long. This one can be immediately chained with a function.
  • N/9+'' will give a string, starting with 0. then followed by a bunch of Ns. This does not work when N < 1 or N > 8, and the result obviously does not contain the same characters the whole way, but pretty close and pretty short.
  • Array(L)+'' will give a string, filled with commas, of length L - 1.
\$\endgroup\$
3
  • 1
    \$\begingroup\$ Along the lines of your 1/3+'' tip, you can repeat a digit D (except 0 and 9) a bunch of times similarly with D/9+''. \$\endgroup\$ Commented Oct 11, 2017 at 0:36
  • \$\begingroup\$ Array(L)+'' gives L-1 length, right? \$\endgroup\$ Commented Oct 11, 2017 at 5:49
  • \$\begingroup\$ Which means that for L=13, the code is 12 characters and the output is 12 characters, so the same as ','.repeat(12) \$\endgroup\$ Commented Oct 11, 2017 at 6:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.