pengantar
Di belakang dari kejatuhan paket npm pad-kiri , mari kita memiliki kode golf untuk mengimplementasikan pad-kiri.
Fungsi kiri-pad terdiri dari 2 argumen default dan 1 argumen tambahan, dalam bentuk string , panjang , ( padchar ). Jika padchar tidak diberikan, ini distandarisasi untuk karakter spasi . Mari kita ambil contoh dengan dua argumen:
left_pad("abc", 6)
Pertama, kita amati panjang tali, yaitu 3 . Setelah ini, kita perlu mengisi string ini di sebelah kiri sampai panjang string penuh telah mencapai panjang yang diberikan dalam fungsi. Dalam hal ini 6 . Karena padchar tidak diberikan , kita perlu menambahkan ini dengan spasi:
abc
Ini adalah string dengan 3 spasi dan string awal, menghasilkan string dengan panjang 6. Berikut adalah contoh dengan padchar yang diberikan:
left_pad("abc", 6, "-")
Kami hanya melakukan hal yang sama seperti contoh di atas, tetapi ganti spasi dengan padchar. Dalam hal ini, tanda hubung:
---abc
Tugas
Mengingat string , panjang , dan mungkin padchar argumen tambahan , output string empuk kiri. Anda dapat mengasumsikan bahwa jumlah panjangnya sama atau lebih besar dari panjang string. Padchar akan selalu terdiri dari 1 karakter.
Uji kasus
left_pad("string", length, ("padchar")) === "left-padded string"
left_pad("foo", 5) === " foo"
left_pad("foobar", 6) === "foobar"
left_pad("1", 2, "0") === "01"
left_pad("1", 2, "-") === "-1"
Ini adalah kode-golf , jadi pengiriman dengan jumlah byte terkecil menang!
Jawaban:
Pyth,
1311 byteCoba di sini .
Mengambil input dari STDIN sebagai string pada baris pertama, panjang pada baris kedua, dan menambahkan char secara opsional pada baris ketiga.
sumber
JavaScript (ES6), 43 byte
sumber
p+=s
, Anda dapat menambahkan 2 byte untuk membuatnyap+=[s]
, dan itu akan berhasil.JavaScript (ES6),
374344 byteUji:
Tidak yakin jika Anda ingin menghitung deklarasi fungsi, saya akan sebaris ini.
sumber
slice
lebih pendek darisubstr
.console.log(f("whatever",10, "*"))
, tetapiconsole.log(("*".repeat(10)+"whatever").substr(-10))
Javascript ES6, 35 byte
Cobalah. Saya percaya ini adalah penangguhan terpendek yang mungkin saat ini dimungkinkan dalam Javascript.
sumber
Python 3,
333129 byteCukup mudah.Terima kasih kepada @xnor karena mengingatkan sayastr.rjust
adalah suatu hal. : PUntuk panjang yang sama (juga terima kasih kepada xnor):
Solusi sebelumnya:
sumber
(x*b+a)[-b:]
ataua.rjust(b,x)
. Sebenarnya,str.rjust
itu sendiri bisa dibilang berfungsi untuk semuanya.rjust
adalah builtin, terima kasih!f(1, 2, 0) === '01';
05AB1E ,
119 byteKode:
Penjelasan:
Menggunakan pengodean CP-1252 . Cobalah online .
sumber
JavaScript (ES5), 70 byte
Menggunakan rekursi ...
Perjalanan awal saya hanya 57 byte:
Tetapi hanya melewati 2 tes pertama:
Saya masih suka yang lebih pendek, karena dalam praktiknya, meneruskan angka ke fungsi manipulasi string bukanlah fitur yang saya perlukan.
sumber
Mathematica, 13 byte
Hanya jawaban builtin # 3 (pertama adalah
Range
, kedua adalahSurd
) Atau kurang builtin: (35 byte)sumber
It's common practice to disallow built-ins that exactly implement what the challenge asks if that's a concern.
(Banding ke otoritas: Martin) (tapi akal sehat juga)Julia, 4 byte
Lulus semua kasus uji:
sumber
rect 7 cor
?lpad("rect", 7, "cor") => "correct"
Javascript (ES6), 55 byte
Buat array nilai kosong dan gabung versi.
Lebih mudah dibaca tetapi
return
menambahkan beberapa karakter lagi.sumber
`
untukinline code blocks.
.+=
mengembalikan nilai operan kirinya, sehingga versi kedua menjadi lebih pendek:(a,n,c=' ')=>(new Array(++n-(a+='').length).join(c)+a)
Tapi itu menjadi lebih lama ketika Anda menambahkan string padding multichar.Bash, 57 Bytes
Parameter: lebar string padchar
Buat untaian lebar ruang .
Ubah setiap karakter spasi menjadi padchar .
Tulis padding lalu string .
sumber
Python, 41 byte
Tanpa builtin rjust, 43 byte:
(bukan apa yang diharapkan seseorang untuk dilakukan, tetapi ia melewati test suite)
sumber
s=str
dan menggantis
denganstr
untuk jumlah byte yang sama.Jelly , 12 byte
Begitu banyak referensi variabel. Bukankah Jelly seharusnya menjadi bahasa diam - diam ?
Cobalah online!
Bagaimana itu bekerja
sumber
padchar (⁵, defaults to 10)
bukankah seharusnya default20
atau32
??
memeriksa apakah ia memiliki nilai default 10 dan menghasilkan spasi dalam kasus itu.JavaScript ES7, 16 byte
built-in ftw! Hanya berfungsi di Firefox 48 ke atas. Berlaku karena fitur ini ditambahkan 12 Maret.
Ini membutuhkan input seperti:
sumber
Pike , 67 byte
desah . String kosong
""
dievaluasi menjaditrue
. Mengapa!?campuran campuran campuran campuran campuran ...
sumber
Pyke , 12 byte (tidak bersaing)
menambahkan input node, perbaikan bug pada len node, ubah hasil default pada assign node setelah tantangan diposting.
Penjelasan:
sumber
JavaScript ES6, 38 byte
Solusi alternatif.
sumber
JavaScript (ES6), 34 byte
Saya menggunakan solusi rekursif.
sumber
Ruby, 42 byte
Parameter: string, ukuran, padchar.
Test suite di bawah ini; harus mencetak semua "benar", cukup masukkan semuanya dalam file yang sama.
sumber
Java 8,
8688 byteIni sebuah fungsi. Argumen ketiga adalah
varargs
untuk mengizinkan char pad opsional (default ke' '
)Rekursi! +2 byte (tanda kurung ditambahkan karena kesalahan jenis tidak kompatibel)
sumber
PHP,
5448 byteMenggunakan penyandian Windows-1252.
Jalankan seperti ini (
-d
ditambahkan untuk easthetics saja):Versi lama (tanpa builtin):
Tweaks
str_pad
bukan loop. Meninggalkan yang lama untuk referensi, karena builtin disukaisumber
R, 50 byte
Terlambat ke pesta lagi tapi ini dia:
Ini hanya mencetak output ke stdout tetapi tidak benar-benar mengembalikan string empuk (tidak yakin apakah ini merupakan persyaratan untuk tantangan). Jika ini diperlukan, solusinya sedikit lebih lama pada 61 byte:
sumber
C, 64 byte
Coba di sini .
sumber
gcc
akan membiarkanundefined reference to function printf
lulus dan termasukprintf
dirinya sendiri, tapi tidak beruntung untukmemset
,asprintf
, danstrlen
. Anda perlu menambahkan#include<string.h>
... dll definisi untuk membuat ini valid.gcc-5.1
. Saya tidak yakin apakah mereka menggunakan flag compiler atau apa-apa-Anda di belakang layar yang tidak saya sadari. Saya awalnya menggunakan ini sebagai pembenaran saya untuk itu tidak berjalan di lingkungan Anda, tapi sekarang saya tidak yakin ...gcc 5.2.1
di Linux, jadi Anda mungkin bisa lolos dengan mengatakanIdeone C, 64 bytes
tetapi jika Anda akan mengklaim itu C, buatlah kompilasi. : pf
mengambil empat parameter, bukan 3? Apakah Anda memerlukan alamat string, atau ...? bagaimanapun,f
harus mengambil paling banyak 3 argumen.