Monday Mini-Golf: Serangkaian pertanyaan kode-golf pendek , diposting (mudah-mudahan!) Setiap hari Senin.
Terkadang orang bosan dengan aturan hidup: "jangan lakukan ini", "kamu tidak bisa melakukan itu", "kami tidak akan membiarkan kamu melakukan ini". Kadang-kadang terlihat sangat membatasi! Tapi kadang-kadang, senang bersenang-senang, jadi mari kita menulis beberapa kode untuk mengubah aturan ini. Dan sementara kita berada di sana, mungkin juga memodifikasi hal-hal negatif lainnya. (Tentu saja, modifikasi ini tidak AKAN hanya bersifat sementara, jadi kami akan meninggalkan kata-kata aslinya juga.)
Tantangan
Tantangan Anda adalah menulis program atau fungsi yang membuat HTML <s>
dicekik di</s>
sekitar kata-kata yang membatasi — yaitu, kata-kata yang diakhiri n't
atau diikuti oleh not
— dan setelah masing-masing, memasukkan setara positifnya dalam SEMUA CAPS. Pada akhirnya, setelah spasi, jumlah penggantian yang dilakukan harus dimasukkan. Sebagai contoh:
Please don't jump into the pool.
menjadi
Please <s>don't</s> DO jump into the pool. 1
Untuk kata-kata yang diakhiri n't
atau diikuti oleh not
(serta cannot
), padanan positif adalah segalanya hingga yang disebutkan di atas not
(tidak termasuk spasi). Inilah yang saya maksud:
do not speak
menjadi<s>do not</s> DO speak
it doesn't work
menjadiit <s>doesn't</s> DOES work
we cannot
menjadiwe <s>cannot</s> CAN
Namun, ada beberapa pengecualian. Pastikan ini ditangani dengan benar.
can't -> <s>can't</s> CAN
won't -> <s>won't</s> WILL
ain't -> <s>ain't</s> AM
shan't -> <s>shan't</s> SHALL
I'm not -> <s>I'm not</s> I AM
you're not -> <s>you're not</s> YOU ARE
Detail
- Input tidak akan berisi spasi putih apa pun kecuali spasi normal (tidak ada tab, baris baru, dll.).
- Masukan tidak akan pernah mengandung negatif ganda (misalnya
we can't not do this
). - Jika sebuah
not
muncul segera setelah tanda baca, atau sebagai bagian dari kata lain, biarkan saja. - Pastikan untuk menyimpan teks asli, termasuk huruf besar / kecil, di antara
<s></s>
tag. - Jika ingin, Anda dapat menggunakannya
<strike></strike>
sebagai pengganti<s></s>
.
Kasus uji
Input:
I'm sorry, but you can't do that.
Driving on the beach isn't allowed.
Driving on the beach is not allowed.
Please don't jump in; I cannot imagine what might come of that.
Don't worry; we won't get into trouble.
I'm not perfect, but you're not either.
You shan't do it 'cause I ain't doin' it!
Can't we capitalize special cases?
I don't like the words can't, shan't, won't, don't, ain't, or ppcgn't.
Oh, this? It's nothing.
Tie a slipknot in the rope.
Would you like Pinot Noir?
This sentence contains none of the replacement words. Not even knot or ca't.
This sentence doesn't contain one of the replacement words.
Output:
I'm sorry, but you <s>can't</s> CAN do that. 1
Driving on the beach <s>isn't</s> IS allowed. 1
Driving on the beach <s>is not</s> IS allowed. 1
Please <s>don't</s> DO jump in; I <s>cannot</s> CAN imagine what might come of that. 2
<s>Don't</s> DO worry; we <s>won't</s> WILL get into trouble. 2
<s>I'm not</s> I AM perfect, but <s>you're not</s> YOU ARE either. 2
You <s>shan't</s> SHALL do it 'cause I <s>ain't</s> AM doin' it! 2
<s>Can't</s> CAN we capitalize special cases? 1
I <s>don't</s> DO like the words <s>can't</s> CAN, <s>shan't</s> SHALL, <s>won't</s> WILL, <s>don't</s> DO, <s>ain't</s> AM, or <s>ppcgn't</s> PPCG. 7
Oh, this? It's nothing. 0
Tie a slipknot in the rope. 0
Would you like Pinot Noir? 0
This sentence contains none of the replacement words. Not even knot or ca't. 0
This sentence <s>doesn't</s> DOES contain one of the replacement words. 1
Mencetak gol
Ini adalah kode-golf , jadi kode terpendek yang valid dalam byte menang. Tiebreaker pergi ke pengiriman yang mencapai jumlah byte terakhirnya terlebih dahulu. Pemenang tidak akan AKAN dipilih Senin depan, 26 Oktober. Semoga beruntung!
Can't we capitalize special cases?
Oh this? It's nothing...
atauI wonder if we'll notice any words like this?
?Jawaban:
Pip ,
138140 byteYeesh, yang
cannot
/knot
perbedaan rumit.Membaca garis dari stdin, output ke stdout. Regex:
cocok dengan satu kata (termasuk apostrof) diikuti oleh salah satu dari tiga hal:
not
n't
not
tanpa spasi, asalkan paruh pertama kata itucan
Itu
-
operator pada regex membuat case-sensitive.Kecocokan diganti dengan hasil dari fungsi berikut. (Catatan: dalam fungsi,
a
adalah seluruh pertandingan danb
grup tangkap 1.)Setelah string yang dimodifikasi selesai, kami juga menampilkan spasi dan jumlah penggantian
i
.sumber
GNU Sed, 321 bytes
(termasuk +1 untuk
-r
)"Penggantian string - pekerjaan sed!" Saya pikir. Tetapi ini sangat sulit, dan saya terus menggunakan pengganti teks asli. Dan menghitung! Setidaknya tidak ada larangan unary dalam pertanyaan ...
sumber
Perl, 153 byte
150 skrip + 3 untuk
-p
Jadi sementara saya cocok dengan semua test case sekarang tetapi regex itu sangat merugikan saya ... Saya akan memikirkannya!
Contoh output:
sumber
I'm not
tidak bekerja dengan benar - itu harusI AM
bukanI'M
. Tapi saya pikir Anda hanya perlu perubahanI'm
untuki'm
dalam kode untuk memperbaikinya.Tie a slipknot in the rope.
atauWould you like Pinot Noir?
. Mereka belum dalam uji kasus, tetapi niat OP adalah untuk mengecualikan kata yang diakhirinot
kecualicannot
.not
! TheI'm
adalah miss buruk, terima kasih untuk tempat!