Terinspirasi oleh ini.
Diberikan string sebagai input yang hanya terdiri dari karakter alfabet huruf besar dan kecil, wicka-wub .
Bagaimana cara memasang string?
Contoh teks yang digunakan adalah "DJMcMayhem".
Pisahkan string sebelum setiap huruf besar, jadi Anda dapatkan ["D", "J", "Mc", "Mayhem"]
.
Selanjutnya, ambil dua bagian dari daftar sebagai sublists. Ini memberi kita [["D", "J"],["Mc", "Mayhem"]]
. Jika daftar adalah panjang ganjil (yaitu 3), sublist pertama akan berisi substring tengah (yaitu [[a,b], [c]]
).
Buat daftar wicka
s dan wub
s. Jumlah wicka
s harus sebanyak panjang bagian pertama dari daftar input (yaitu ["D", "J"] -> ["wicka", "wicka"]
), dan jumlah wubs
harus sebanyak panjang bagian kedua dari daftar input. Dalam kasus kami, ini memberi ["wicka", "wicka", "wub", "wub"]
.
Sekarang gabungkan sublist dari daftar input ke dalam string tunggal dan ratakan.
Saat ini kami memiliki ["DJ", "McMayhem"]
dan ["wicka", "wicka", "wub", "wub"]
.
Bergabung dengan wicka
/ wub
daftar dengan -
s: wicka-wicka-wub-wub
. Berlaku a -
. Jika ada lebih dari satu huruf kapital di input, tambahkan yang lain -
.
Sekarang kita punya ["DJ", "McMayhem"]
dan "-wicka-wicka-wub-wub-"
.
Tambahkan wicka-wub
string ke akhir item pertama dalam daftar input, untuk mendapatkan ["DJ-wicka-wicka-wub-wub-","McMayhem"]
.
Terakhir, ulangi karakter di bagian kedua dari string dengan nilai 0-indexed mereka di string input asli. Dalam contoh kita, itu berarti yang pertama M
akan diulang dua kali, lalu c
tiga kali, dan M
empat kali berikutnya . Bergabunglah dengan daftar, jadi bagian kedua (bagian yang baru saja Anda ulangi hurufnya) ditambahkan ke bagian pertama ( "DJ-wicka-wicka-wub-wub-"
).
Hasil akhir dari input:
"DJ-wicka-wicka-wub-wub-MMcccMMMMaaaaayyyyyyhhhhhhheeeeeeeemmmmmmmmm"
Total proses:
["D", "J", "Mc", "Mayhem"] =>
[["D", "J"], ["Mc", "Mayhem"]] =>
["DJ", "McMayhem"] and ["wicka", "wicka", "wub", "wub"] =>
["DJ", "McMayhem"] and "-wicka-wicka-wub-wub-" =>
["DJ-wicka-wicka-wub-wub-", "McMayhem"] =>
"DJ-wicka-wicka-wub-wub-MMcccMMMMaaaaayyyyyyhhhhhhheeeeeeeemmmmmmmmm"
Tugas Anda
Tugas Anda adalah, diberi string yang hanya terdiri dari karakter alfabet huruf besar dan kecil, menghasilkan versi wicka-wubbed dari string itu.
Beberapa aturan
- Masukan dapat seluruhnya terdiri dari huruf kecil, atau seluruhnya huruf besar, atau jumlah masing-masing, tetapi tidak ada karakter lain.
- Jika input terdiri dari huruf kecil seluruhnya, output yang benar harus menjadi tahap akhir (string dengan karakter diulang sesuai dengan posisi 0-diindeks). Seharusnya tidak ada
wicka
atauwub
dalam kasus itu. - Aturan standar berlaku, program atau fungsi lengkap, terserah Anda.
- Ini adalah kode-golf sehingga kode terpendek menang.
GoodLuck-wicka-wicka-wub-GGGGGGGGooooooooollllllllllfffffffffffeeeeeeeeeeerrrrrrrrrrrrrssssssssssssss
Uji kasus
input => output
DJMcMayhem => DJ-wicka-wicka-wub-wub-MMcccMMMMaaaaayyyyyyhhhhhhheeeeeeeemmmmmmmmm
PPCG => PP-wicka-wicka-wub-wub-CCGGG
foobarbaz => fooooobbbbaaaaarrrrrrbbbbbbbaaaaaaaazzzzzzzzz
FooBarBaz => FooBar-wicka-wicka-wub-BBBBBBaaaaaaazzzzzzzz
HelloWorld => Hello-wicka-wub-WWWWWoooooorrrrrrrllllllllddddddddd
Test => Test-wicka
UPPER => UPP-wicka-wicka-wicka-wub-wub-EEERRRR
fooBarBaz => fooBar-wicka-wicka-wub-BBBBBBaaaaaaazzzzzzzz
5
huruf besar?foobarbaz
kembali sajafoobarbaz
? Apakah ada bagian kedua?Jawaban:
Java 8 (782 bytes)
Tidak Disatukan:
sumber
Perl 5 , 142 byte
130 byte kode + 12 untuk
-F(?=[A-Z])
.Ini sekarang dengan benar cocok dengan semua test case yang disediakan.
Cobalah online!
Catatan : TIO termasuk
-l
untuk menjalankan semua tes sekaligus.sumber
Kotlin 1.1 -
494492 bytepengajuan
Uji
Lari
Bekerja di KotlinLang, tetapi tidak pada TryItOnline karena 1.1 tidak didukung
Berlari melalui kompresor saya, menghemat 2 byte
sumber
Python 3 ,
234281270248246 byteCobalah online!
Menambahkan 47 byte, terima kasih kepada Tn. Xcoder;)
Disimpan 11 byte berkat Jonathan Frech
Disimpan 22 byte berkat Halvard Hummel
Disimpan 2 byte lebih banyak berkat Tn. Xcoder
sumber
foobar
.