Latar Belakang
Ini adalah bagian pertama dari lapangan golf 3-lubang tentang pemrosesan teks. Gagasan yang terlalu melengkung adalah bahwa jika Anda mengambil teks input dan menyalurkannya melalui solusi untuk ketiga tantangan (dengan sejumlah kecil kode lem), itu akan memuntahkan paragraf yang diformat dengan indah. Dalam tantangan pertama ini, tugas Anda adalah tanda hubung teks dengan menggunakan pola tanda hubung yang diberikan.
Memasukkan
Program Anda akan mengambil dua input string: sepotong teks dan daftar pola tanda hubung. Input pertama hanyalah serangkaian karakter dan spasi ASCII yang tidak kosong; itu tidak akan berisi jeda baris atau tilde ~
. Input kedua adalah daftar kata-kata yang dibatasi koma, yang terdiri dari suku kata yang dibatasi-tilde dari karakter ASCII huruf kecil. Contohnya adalah ex~cel~lent,pro~gram~ming,abil~i~ties
.
Keluaran
Program Anda harus memodifikasi input pertama dengan cara berikut. Kata apa pun (substring maksimal karakter ASCII alfabet) yang versi huruf kecilnya ditulis dgn tanda penghubung ditemukan di input kedua harus diganti oleh versi ditulis dgn tanda penghubung, tetapi kasusnya harus dipertahankan. Dengan daftar contoh di atas, jika teks berisi kata Excellent
, itu akan digantikan oleh Ex~cel~lent
; Namun, Excellently
akan tidak dimodifikasi. Output Anda adalah string yang dimodifikasi ini.
Aturan dan Penilaian terperinci
Anda dapat mengasumsikan berikut tentang input:
- Input pertama tidak berisi tilde, dan tidak ada spasi awal, akhir, atau berulang. Itu tidak kosong.
- Input kedua berisi setidaknya satu kata, dan setiap kata di dalamnya mengandung setidaknya dua suku kata. Setiap suku kata tidak kosong.
- Input kedua tidak mengandung kata yang muncul sebagai suku kata di kata lain.
Anda dapat mengubah urutan kedua input, jika diinginkan, dan secara opsional menambahkan satu baris tambahan ke output.
Anda dapat menulis fungsi atau program lengkap. Hitungan byte terendah menang, dan celah standar tidak diizinkan.
Uji Kasus
Ini tercantum dalam format 1st input [newline] 2nd input [newline] output
.
Excellent programming abilities, you work excellently!
ex~cel~lent,pro~gram~ming,abil~i~ties
Ex~cel~lent pro~gram~ming abil~i~ties, you work excellently!
Superman (sometimes incorrectly spelled "Super-man") is super #&%@ing strong.
su~per,some~times,in~cor~rectly,spell~ing
Superman (some~times in~cor~rectly spelled "Su~per-man") is su~per #&%@ing strong.
IncONsISTent caPItalizATIon!
in~con~sis~tent,cap~i~tal~iza~tion
In~cON~sIS~Tent caP~I~tal~izA~TIon!
Such short words.
awk~ward
Such short words.
Digits123 are456cool789.
dig~its,dig~i~tal,are~cool
Dig~its123 are456cool789.
magic magic
ma~gic
ma~gic ma~gic
Kemungkinan kesalahan tanda hubung dalam tantangan ini adalah karena alat tanda hubung ini .
#programming!
masih akan dipengaruhi oleh input keduapro~gram~ming
)? Apakah angka juga tidak masuk hitungan (yaitu hanya karakter alfabet yang diperbolehkan)?Jawaban:
Pip,
6054 byteRepositori GitHub untuk Pip
Mengambil input sebagai argumen baris perintah (yang mengharuskan tanda kutip di sekitar input 1, dengan asumsi itu berisi spasi). Tidak ada baris tambahan yang dicetak (tambahkan
x
ke akhir program untuk menambahkan satu).Agak tidak terserang, dengan komentar:
Contoh dijalankan:
sumber
Retina , 88 byte
Untuk tujuan penghitungan, setiap baris masuk ke file terpisah,
\n
diganti dengan karakter baris baru yang sebenarnya dan<empty>
merupakan file kosong. Untuk kenyamanan, Anda dapat menjalankan kode di atas dari satu file (di mana<empty>
ada baris kosong) jika Anda menggunakan tanda-s
penerjemah.sumber
Javascript ES6,
117141 karakterUji:
sumber
Javascript (ES6),
173169Pencarian regex dasar dan ganti
Biola
Sunting: Fixed bug untuk test case
magic magic
,ma~gic
sumber
f("magic magic", "ma~gic")
pengembalian"ma~gic magic"
Perl, 146
Hanya upaya pertama, banyak hal dapat dipersingkat - akan dilanjutkan besok!
sumber