Diberikan string huruf ASCII huruf kecil yang tidak kosong a-z
, mengeluarkan string itu dengan masing-masing "run" berturut-turut dari huruf yang sama diperpanjang dengan satu salinan lagi surat itu.
Misalnya, dddogg
( 3 d
's, 1 o
, 2 g
's) berubah menjadi ddddooggg
( 4 d
's, 2 o
's, 3 g
's).
Ini adalah kode-golf : jawaban tersingkat dalam byte menang.
Uji kasus
aabbcccc -> aaabbbccccc bel pintu -> ddooorrbbeelll uuuuuuuuuz -> uuuuuuuuuzz q -> qq xyxyxy -> xxyyxxyyxxyy xxxyyy -> xxxxyyyy
Jawaban:
05AB1E , 5 byte
Penjelasan:
Cobalah secara online atau sebagai test suite .
Enclose adalah builtin yang cukup baru; ini pertama kalinya saya menggunakannya. Sangat mudah ;)
05AB1E , 4 byte (tidak bersaing)
.¡
telah diganti olehγ
dalam pembaruan terbaru.sumber
dddd
untuk elemen pertama dari array pada stack dalam penjelasan setelah "terlampir" dieksekusi.Ć
?xx -> xxxx
kapan seharusnyaxx -> xxx
...?Python 3 , 44 byte
Cobalah online!
sumber
Retina , 11 byte
Cobalah online!
Mengganti setiap run karakter dengan salah satu karakter run diikuti oleh run itu sendiri.
sumber
Pyth , 7 byte
Suite uji .
Bagaimana itu bekerja
sumber
MATL , 5 byte
Cobalah online!
Penjelasan
Pertimbangkan input
'doorbell'
.sumber
Alice , 17 byte
Cobalah online!
Penjelasan
Ini adalah kerangka kerja untuk program yang beroperasi sepenuhnya dalam mode Ordinal dan pada dasarnya linier (loop sederhana dapat ditulis, dan satu digunakan dalam program ini, tetapi lebih sulit untuk bekerja dengan aliran kontrol bercabang di sini). Pointer instruksi memantul secara diagonal ke atas dan ke bawah melalui kode dari kiri ke kanan, kemudian digeser satu sel oleh dua mirror di akhir, dan bergerak kembali dari kanan ke kiri, mengeksekusi sel yang dilompati pada iterasi pertama. Bentuk linear (mengabaikan cermin) maka pada dasarnya terlihat seperti ini:
Mari kita lalui ini:
sumber
Jelly , 6 byte
Cobalah online!
Hanya berfungsi sebagai program lengkap (yaitu keluaran yang dirubah).
sumber
Brachylog , 8 byte
Cobalah online!
Penjelasan
sumber
~
didahulukan daripada metapredicate (atau ubah ke operasi postfix); jika Anda melakukannya, Anda bisa melakukan ini dalam tujuh.C, 49 byte
Lihat itu berfungsi online .
sumber
Python 2 , 47 byte
Cobalah online!
sumber
C, 53 byte
Cobalah online!
sumber
PHP, 40 Bytes
Versi Online
PHP <7.1, 44 Bytes
Versi tanpa Regex
Versi Online
sumber
Japt , 8 byte
7 byte kode, +1 untuk
-P
bendera.Uji secara online!
Penjelasan
Ini menggunakan
ó
built-in (partisi on falsy) yang baru saja saya tambahkan kemarin:sumber
Hexagony , 33 byte
Diperluas:
Cobalah online!
Kode semu kurang lebih:
sumber
JavaScript (ES6),
3330 byteCobalah
sumber
brainfuck , 23 byte
Cobalah online!
Penjelasan
sumber
Perl 6 , 18 byte
Cobalah
Diperluas:
sumber
05AB1E , 8 byte
Cobalah online!
Penjelasan:
sumber
Haskell, 36 byte
Contoh penggunaan:
f "aab"
->"aaabb"
. Cobalah online!Ketika string memiliki setidaknya dua karakter, ikat
a
ke karakter pertama,b
ke karakter kedua danc
ke seluruh string. Outputa
diikuti oleha
jikaa
tidak sama denganb
diikuti oleh panggilan rekursif denganb:c
. Jika hanya ada satu char, hasilnya adalah dua kali char ini.sumber
CJam, 10 byte
Cobalah online!
Penjelasan:
sumber
Ruby, 30 byte
sumber
Jelly , 5 byte
Cobalah online!
Bagaimana itu bekerja
sumber
Batch, 140 byte
Mengambil input pada STDIN.
sumber
sed,
1815 byte (+1 untuk -r)Solusi asli
sumber
R, 36 byte
sumber
PowerShell, 50 byte
Cobalah online!
sumber
Mathematica,
3421 byteTerima kasih kepada Martin Ender karena menemukan cara yang tepat untuk melakukan ini di Mathematica, menghemat 13 byte!
Fungsi murni menggunakan array karakter sebagai format input dan output.
Split
memisahkan daftar ke dalam menjalankannya karakter yang sama.##&[#,##]&
adalah fungsi yang mengembalikan urutan argumen: argumen pertama diumpankan, lalu semua argumen (jadi ulangi argumen pertama khususnya); ini diterapkan (@@@
) ke setiap sublist dariSplit
daftar.sumber
##&[#,##]&@@@Split@#&
? (Belum diuji.)Gather
sebenarnya tidak berfungsi jika ada beberapa kali menjalankan karakter yang sama (tapi untungnyaSplit
lebih pendek satu byte)Split
saya di hati saya) Konstruksi indah di komentar pertama Anda!Java,
15114660 byteRegex
Terperinci
sumber
Matcher
danPattern
? Anda dapat golf hingga 60 byte seperti ini:String f(String s){return s.replaceAll("((.)\\2*)","$1$2");}
brainfuck , 38 byte
Cobalah online!
sumber
Alice , 12 byte
Dua byte diangkut berkat Martin Ender bahkan sebelum jawaban ini diposting Dia lebih kuat dari yang bisa kamu bayangkan.
Cobalah online!
Penjelasan
sumber