Memasukkan:
- Tali (potongan gelombang) dengan panjang
>= 2
. - Bilangan bulat positif n
>= 1
.
Keluaran:
Kami menampilkan gelombang single-line. Kami melakukan ini dengan mengulangi input string n kali.
Aturan tantangan:
- Jika karakter pertama dan terakhir dari string input cocok, kami hanya menampilkannya sekali dalam total output (yaitu
^_^
panjang 2 menjadi^_^_^
dan tidak^_^^_^
). - String input tidak akan mengandung spasi putih / tab / baris baru / dll.
- Jika bahasa Anda tidak mendukung karakter non-ASCII, maka itu tidak masalah. Selama masih sesuai dengan tantangan dengan input gelombang ASCII saja.
Aturan umum:
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
Jangan biarkan bahasa kode-golf mencegah Anda memposting jawaban dengan bahasa non-codegolf. Cobalah untuk memberikan jawaban sesingkat mungkin untuk bahasa pemrograman 'apa saja'. - Aturan standar berlaku untuk jawaban Anda, jadi Anda diperbolehkan menggunakan STDIN / STDOUT, fungsi / metode dengan parameter yang tepat, program lengkap. Panggilanmu.
- Celah default tidak diperbolehkan.
- Jika memungkinkan, silakan tambahkan tautan dengan tes untuk kode Anda.
- Juga, silakan tambahkan penjelasan jika perlu.
Kasus uji:
_.~"( length 12
_.~"(_.~"(_.~"(_.~"(_.~"(_.~"(_.~"(_.~"(_.~"(_.~"(_.~"(_.~"(
'°º¤o,¸¸,o¤º°' length 3
'°º¤o,¸¸,o¤º°'°º¤o,¸¸,o¤º°'°º¤o,¸¸,o¤º°'
-__ length 1
-__
-__ length 8
-__-__-__-__-__-__-__-__
-__- length 8
-__-__-__-__-__-__-__-__-
¯`·.¸¸.·´¯ length 24
¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯
** length 6
*******
String & length of your own choice (be creative!)
>= 1
" tampaknya agak pleonastik bagi saya ... :)Jawaban:
Pyke,
151410 byteCoba di sini!
sumber
Python 3, 32 byte
Menggabungkan
n
salinan string, menghapus karakter pertama dari semua salinan tetapi yang pertama jika karakter pertama cocok dengan yang terakhir.sumber
s[0]
dans[-1]
sepertinya mengacu pada byte pertama dan terakhir, daripada karakter pertama dan terakhir. Sunting: ah, tunggu, itu Python 2 vs. Python 3. Ia berfungsi dengan benar di Python 3.05AB1E , 13 byte
Menggunakan pengodean CP-1252 .
Cobalah online!
Penjelasan
-___-
dan3
digunakan sebagai input misalnya.sumber
JavaScript (ES6), 47 byte
sumber
s=>n=>...
alih - alih(s,n)=>
Perl, 29 byte
28 byte kode +1 untuk
-p
.Terima kasih kepada @Dada karena telah membantu saya mengurangi beberapa byte!
Pemakaian
Contoh online.
sumber
<>
alih-alih$'
karena memungkinkan Anda untuk menyingkirkannya-0
. Dan kemudian Anda dapat menggunakans///e
alih-alih//;$_=
memenangkan satu byte lagi :-)$
mencocokkan akhirnya, masih menyelamatkan saya byte sebagai tidak menggunakan'
cara saya bisa menjatuhkannya harus menyimpan ke file untuk menyimpan menambahkan 3 untuk-p
dan mengembalikannya ke 1!$
bukan baris baru yang Anda miliki sebelumnya. (Maaf komentar saya tidak terlalu detail, saya sedang terburu-buru ...)<>
dalam string ganti. Tetapi jikan
dipisahkan oleh spasi alih-alih baris baru, jumlah karakter dapat dikurangi sedikit:s/(.+?) (\d+)/$1x$2/e
Perl, 23 byte
Termasuk +1 untuk
-p
Berikan string input diikuti dengan angka pada baris terpisah di STDIN
wave.pl
:Jika karakter pertama dalam kata itu bukan karakter khusus regex, versi 22 byte ini juga berfungsi:
sumber
/g
pengubah ketika Anda menempelkannya ;-)MATL,
191714 byteIni berfungsi untuk ASCII pada juru bahasa online dan untuk unicode dan ASCII saat dijalankan menggunakan MATLAB.
Cobalah secara Online!
Penjelasan
sumber
Retina , 29 byte
Baris 2 dan 5 memiliki ruang tambahan.
Cobalah online! (Baris pertama memungkinkan suite tes yang dipisahkan dengan linefeed.)
sumber
Batch, 117 byte
Mengambil jumlah pengulangan sebagai parameter baris perintah dan membaca string dari STDIN.
sumber
Pyth, 13 byte
Suite uji!
Penjelasan untuk diikuti.
sumber
Gema, 41 karakter
Contoh dijalankan:
sumber
PowerShell v2 +, 48 byte
Keluarkan seluruh string satu kali, diikuti oleh n-1 salinan string atau substring, tergantung pada apakah karakter pertama dan terakhir cocok.
The
.Substring()
Metode output dari indeks dipasok ke akhir string, jadi jika$s[0]-eq$s[-1]
mengevaluasi ke false (0), kita mendapatkan seluruh string. Jika pernyataan itu benar (1), Kami mendapatkan substring mulai dari karakter kedua.sumber
VBA 119 byte
Baru dalam game ini dan vba menang dengan byte tertinggi: P
PS: tidak percaya vba berdiri dekat dengan JAWA HAHA
Penjelasan:
sumber
CJam,
1615 byteCobalah online
Penjelasan:
sumber
K, 12 Bytes
Terima kasih
sumber
{,/y#,$[(*x)~*|x;-1;0]_x}
selama 25 byte menangani pencocokan pertama / terakhir. Jika Anda senang melanggar Aturan 1, maka Anda dapat memiliki{,/y#,x}
untuk 8.PHP, 72 Bytes
dengan PHP 7.1 bisa dikurangi menjadi 65 Bytes
sumber
Pip , 18 byte
Solusi Regex, mengambil keuntungan dari aturan "no spasi dalam input". Mengambil string dari stdin dan angka sebagai argumen baris perintah.
Cobalah online!
Penjelasan:
Dengan demikian,
a b
berubah menjadiab
,a a
berubah menjadia
, dan ruang di ujung tali dihilangkan. Kemudian hasilnya dicetak secara otomatis.sumber
Haskell, 59 byte
Versi tidak disatukan:
sumber
Java 10,
12311110910710210079 byteCobalah online.
Alternatif dengan byte-count yang sama ( 79 byte ):
Cobalah online.
Tentu saja saya akan mencoba menjawab pertanyaan saya sendiri. ;)
-5 byte terima kasih kepada @ dpa97 .
-21 byte mengkonversi dari Java 7 ke 10.
Penjelasan:
sumber
.split
.s.substring(1)
dua byte lebih pendek. ;)Javascript ES6, 49 karakter
Uji:
sumber
QBIC , 65 byte
Saya kira saya harus menambahkan $ KIRI dan $ KANAN ke QBIC ...
Penjelasan:
sumber
C #, 79 byte
Sedikit metode yang aneh untuk mengulang suatu string. Buat string baru dengan panjang pengulangan yang diinginkan dan kemudian ganti setiap karakter dengan string untuk diulang. Selain itu, sepertinya strategi yang sama seperti banyak orang lain.
sumber
x
? Mungkin akan lebih baik untuk mengubahnya menjadi spasi, karena " String input tidak akan berisi spasi putih / tab / baris baru / dll. ".x
. Ini menciptakanxx...x
string pertama dan kemudian mengganti masingx
- masing tanpa mengevaluasi kembali string dari awal dengan apa yang perlu diganti.SpecBAS - 68 byte
Menggunakan inline-
IF
untuk memeriksa apakah karakter pertama dan terakhir sama. Jika tidak, cetaklah stringn
beberapa kali. Jika tidak, pisahkan string dengan panjang-1, ulangi dan masukkan karakter terakhir di akhir.Hanya dapat menerima karakter ASCII (atau karakter yang dibangun di dalam IDE SpecBAS)
sumber
APL, 19 byte
Pemakaian:
Penjelasan:
⊃⍺=⊃⌽⍺
: lihat apakah karakter pertama cocok dengan karakter terakhir⍺↓⍨
: jika ini masalahnya, lepaskan karakter pertama⊂
: lampirkan hasilnya⍵⍴
: mereplikasi itu⍵
kali1↓
: jatuhkan yang pertama (ini lebih pendek dari(⍵-1)⍴
)∊
: dapatkan semua elemen sederhana (undo the boxing)⍺,
: tambahkan satu instance dari seluruh string ke depansumber
Catatan tambahan, 98 byte
... tetapi Anda mungkin perlu 'flush' untuk memperbaikinya agar juru bahasa PS Anda menyiram buffer comm, enam byte lagi :(
sumber
Common Lisp (LispWorks), 176 byte
Pemakaian:
Penjelasan:
Ungolf:
sumber
Vim, 17 byte
Cara mudah untuk melakukan ini adalah dengan menggunakan regex referensi belakang yang dapat mengetahui apakah karakter pertama dan terakhir cocok. Tapi regex panjang itu panjang. Kami tidak menginginkan itu.
Gelombang yang akan diulang ada di buffer. Saya berasumsi nomor yang akan diulang ada di register
"a
(ketikqaNq
dengan N sebagai nomor untuk mengaturnya) Idenya adalah:Kemudian
P
teks yang terhapus@a
dikali.lDg*
: Manuver ini membuat regex yang cocok dengan karakter pertama apa pun, terlepas dari apakah perlu melarikan diri atau tidak, atau apakah itu sebuah kata atau tidak. (*
akan cukup untuk membuat regex lolos dengan benar, tetapi akan menambahkan\<\>
sampah yang tidak diinginkan jika itu adalah karakter kata, seperti_
.)p^
: Langkah terakhir berantakan. Bersihkan ke posisi awal, awal baris.v$
: Dalam mode visual,$
secara default pindah ke setelah akhir baris.?<C-P>$<CR>hd
: Jika regex sebelumnya ada di akhir baris, pencarian ini akan pindah ke sana; jika tidak, tetap berada di luar batas. Bergerak ke kiri dari sana dan kami menyelesaikan penghapusan (membosankan) yang kami butuhkan.@aP
: Jalankan pengulangan angka sebagai makro untuk digunakan sebagai argumenP
.sumber
Ruby, 38 byte
Saya pikir ini cukup jelas. Saya masih bertanya-tanya apakah ada cara yang lebih ringkas untuk mewakili
s[0..-2]
blok, tetapi saya belum menemukannya.sumber
Java (117 byte)
sumber
b>0;b--
untukb-->0;
. Juga, mengapab+
ada di sanac+=b+a.substring
? Tetap saja, ini adalah jawaban pertama yang bagus jika Anda mengemukakannya secara mandiri. Nikmati masa tinggal Anda di sini di PPCG! :) Juga, Anda mungkin menemukan Tips untuk bermain golf di Jawa menarik untuk dibaca.