Tantangan
Hai, diberi string sebagai input, hapus salam yang ditemukan di awal string.
Program yang melakukan pergantian paling benar di bawah 50 byte menang.
Salam
Hai, salam didefinisikan sebagai salah satu dari kata-kata berikut:
- Hai
- Hei
- Halo
- terhormat
- Salam pembuka
- hai
- teman-teman
- Hai Aku
- Howdy
- hai
- jerami
- heya
- Halo
- hihi
- salam
Huruf pertama dapat ditulis dengan huruf besar.
Akan selalu ada koma dan / atau ruang tunggal setelah salam yang juga harus dihapus. Koma dan spasi mungkin dalam urutan apa pun ( ,<space>
atau <space>,
) dan keduanya harus dihilangkan.
Salam dan kata berikut hanya akan dipisahkan oleh koma dan / atau spasi tunggal.
Anda kemudian harus menggunakan huruf besar dari kata pertama yang akan mengikuti salam. Sekalipun tidak ada penggantian yang terjadi, Anda masih harus menggunakan huruf besar kata pertama dari output.
Kapitalisasi hanya berlaku untuk karakter abjad huruf kecil ( abcdefghijklmnopqrstuvwxyz
). Anda harus meninggalkan karakter lain apa pun.
Salam akan selalu di awal string. Anda seharusnya tidak mengganti salam yang tidak di awal.
Mungkin tidak selalu ada salam.
Kode Anda harus di bawah 50 byte.
Contohnya
Input > Output
Salutations, what's going on? > What's going on?
hello i have quetions how does juice an avocado > I have quetions how does juice an avocado
How d'you do > How d'you do
Hey,You! > You!
hola cows eat hay > Cows eat hay
hey Hi there! > Hi there!
hihi ,guys > Guys
Uji baterai
Hola, ada total 1.000 input berbeda:
Baterai uji dapat ditemukan di sini di mana setiap input dipisahkan oleh baris baru: https://github.com/beta-decay/Remove-Substitutions-Battery/blob/master/inputs.txt
Output yang benar yang sesuai ada di sini: https://github.com/beta-decay/Remove-Substitutions-Battery/blob/master/replaced.txt
Perintah Bash untuk mengambil kedua hal di atas adalah
wget https://raw.githubusercontent.com/beta-decay/Remove-Substitutions-Battery/master/{inputs,replaced}.txt
Kemenangan
Howdy, program dengan substitusi paling benar dari 1000 input di atas menang.
Anda harus meletakkan persentase input yang ditangani oleh program Anda dengan benar di header Anda seperti:
# Language Name, percentage%
Saya tidak sepenuhnya yakin mengapa Jeff membuat ini menjadi suatu hal, tetapi itu membuat tantangan yang bagus.
sumber
s=>System.Text.RegularExpressions.Regex.Replace();
50 byte bahkan sebelum pola ditentukan, itu C # keluar lalu. (Dengan pendekatan regex tentunya)Jawaban:
GNU sed,
78%100%(49 byte)
Baterai tes sangat terbatas: kita dapat menghitung kata-kata mana yang muncul lebih dulu pada setiap baris:
Salam untuk dihapus mulai dengan
d
,g
,h
ataus
(atau huruf besar versi daripadanya); non-salam yang dimulai dengan surat-surat itu adalahMengabaikan garis di mana mereka muncul sendirian, itu 220 false-positive. Jadi mari kita hapus saja kata-kata awal yang dimulai dengan salah satu dari keempat huruf itu.
Ketika kita melihat kata awal dimulai dengan salah satu dari mereka (
/ ^[dghs]\w*
), case-insensitive (/i
), dan diikuti oleh setidaknya satu karakter non-kata (\W\+
), kemudian ganti dengan string kosong. Kemudian, ganti karakter pertama dengan huruf besar yang setara (s/./\U&/
).Itu memberi kita
Kami sekarang dapat sedikit memperbaiki ini:
Set false-positif terbesar adalah
how
, jadi kami membuat substitusi bersyarat dengan awalan dengan tes negatif:Kami juga dapat memfilter pada huruf kedua, untuk menghilangkan
g'd
,speak
dansweet
:Yang tersisa hanya
good
sebagai false positive. Kami dapat menyesuaikan tes awalan untuk menghilangkan kata-kata yang berakhir dengan salah satuw
ataud
:Demonstrasi
sumber
Retina ,
68%72,8% (lama)74,8%77,5% (baterai uji baru)Cobalah online! Sunting: Memperoleh cakupan 4,8% (lama) 2,7% (baru) dengan bantuan dari tips @ MartinEnder.
sumber
[ ,]+
untuk memeras beberapa byte lagi. Anda juga dapat mengekstrakh
dari pergantian.i`^h(a[iy]|eya?|i(h?i?|ya))[ ,]+
mungkin berfungsi berarti Anda memiliki 8 byte untuk cadanganh?i?
menghemat tidak adah?i|
dan akan cocokhih
(meskipun saya tidak tahu apakah itu bahkan dalam kasus uji).ih?i?|iya
.i`^h(a[iy]|eya?|ih?i|iya|ola|ello)[ ,]+
saat ituPHP, 60,6%
50 Bytes
Cobalah online!
PHP, 59,4%
49 Bytes
Cobalah online!
PHP, 58,4%
50 Bytes
Cobalah online!
sumber
#^[gh]\w+.#
Vim,
55,4%44,4%Penjelasan:
sumber