Tip? Cara singkat untuk menghasilkan hingga 12 karakter berulang dalam JavaScript

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

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

Apakah ada cara yang lebih pintar untuk menghasilkan string hingga 12 karakter yang berulang dalam JavaScript?

Steve Bennett
sumber
1
Jangan berpikir begitu tetapi tergantung pada tantangannya, Anda mungkin bisa bermain golf beberapa kali untuk menghemat byte menggunakan mis. RLE
ASCII-only
9
Untuk kasus koma khusus yang dapat Anda lakukan Array(12)+'', yang lebih pendek daripada literal dimulai dari 11 koma dan kemudian tetap lebih pendek dari repeat.
Martin Ender
1
@SteveBennett kadang-kadang Anda hanya peduli tentang panjang string dan bukan karakter sebenarnya, dan banyak tantangan PPCG memungkinkan Anda untuk menggunakan beberapa karakter ASCII pilihan Anda untuk output.
Martin Ender
1
Jika Anda akan menggunakan ulang, ulangi, Anda bisa menamainya.
Shaggy
5
Jika Anda tidak benar-benar membutuhkan 12 karakter identik melainkan string 12 karakter, Anda juga bisa melakukannya 1e11+''.
Arnauld

Jawaban:

2

Sayangnya, setelah apa yang tampak sebagai keabadian mencari dokumentasi, saya tidak bisa menemukan solusi apa pun yang akan bekerja dengan batasan 12 karakter dan menghasilkan untuk setiap karakter yang diberikan. Namun, ada beberapa trik rapi yang bisa dilakukan untuk menghemat beberapa byte untuk kasus-kasus tertentu:

  • 1eL-1+''akan memberikan string, diisi dengan 9s, dengan panjang L.
  • ''.padEnd(L)akan memberikan string, diisi dengan spasi, panjang L. Ini hanya berguna ketika L > 10, jika tidak terlalu lama. Yang ini dapat segera dirantai dengan suatu fungsi.
  • N/9+''akan memberikan string, dimulai dengan 0.kemudian diikuti oleh sekelompok Ns. Ini tidak berfungsi ketika N <1 atau N > 8, dan hasilnya jelas tidak mengandung karakter yang sama sepanjang jalan, tetapi cukup dekat dan cukup singkat.
  • Array(L)+''akan memberikan string, diisi dengan koma, dengan panjang L - 1.
XavCo7
sumber
1
Di sepanjang garis 1/3+''ujung Anda, Anda dapat mengulangi digit D (kecuali 0 dan 9) beberapa kali sama dengan D/9+''.
kamoroso94
Array(L)+''memberi L-1panjang, kan?
Dom Hastings
Yang berarti bahwa untuk L = 13, kodenya adalah 12 karakter dan outputnya adalah 12 karakter, jadi sama dengan','.repeat(12)
Steve Bennett