pengantar
Kami - terutama orang-orang aneh di antara kami, yang cenderung menjadi penggemar - semua mengingat kartun Far Side yang lama ini :
Jelas, Profesor Schwartzman dapat memoles keterampilan pemrogramannya sedikit lebih lama sebelum ia menggunakan penemuannya. Tetapi bisakah Anda mereplikasi sendiri ... menggunakan sesedikit mungkin byte?
Spesifikasi Input
Anda harus membuat skrip yang menerjemahkan suara anjing menjadi "Hei" yang dilantunkan dengan tepat. Ini adalah golf kode murni; jumlah byte terendah menang.
Input Anda akan terdiri dari beberapa kombinasi token berikut:
Bark
,Baark
,Baaark
,Baaaark
, ... (yaitu,B*rk
dengan setidaknya 1a
mengganti tanda bintang)Woof
,Wooof
,Woooof
, ... (W*f
dengan setidaknya 2o
s menggantikan tanda bintang)Grr
,Grrr
,Grrrr
, ..., (G
diikuti sedikitnya 2r
s)- Sejumlah
.
(periode),!
(tanda seru) dan / atau?
(tanda tanya) karakter, yang dapat terjadi di mana saja di input
Perhatikan, sekali lagi, bahwa token berbasis- Woof
dan Grr
berbasis selalu masing-masing membutuhkan setidaknya dua o
dan r
; Wof
dan Gr
yang tidak token valid.
Tidak ada batasan berapa lama token bisa (misalnya, berapa banyak token yang a
bisa ada dalam Bark
token); Namun, dekoder Anda hanya perlu bekerja dengan benar untuk token input hingga 10 total a
, o
s, atau r
s untuk melewati tantangan ini.
Spesifikasi Keluaran
Sesuai dengan desain Schwartzman, program dekoder anjing Anda harus memprosesnya menjadi teks keluaran sebagai berikut:
Bark
,,Woof
danGrr
menjadiHey
;Baark
,,Wooof
danGrrr
menjadiHeyy
;Baaark
,,Woooof
danGrrrr
menjadiHeyyy
; dll.- Untuk semua
Bark
token berbasis, jumlahy
s dalamHey
token berbasis keluaran harus sama dengan jumlaha
s; - Untuk semua
Woof
token berbasis, jumlahy
s dalamHey
token berbasis- keluaran harus satu lebih sedikit dari jumlaho
s; - Untuk semua
Grr
token berbasis, jumlahy
s dalamHey
token berbasis- keluaran harus satu lebih sedikit dari jumlahr
s; - Semua tanda baca (
.
,!
, dan?
) yang tersisa tidak berubah.
Ingatlah untuk menjatuhkan satu y
dari output hanya untuk Woof
dan Grr
hanya! Input Baaaaaaaark?
, dengan 8 a
detik, akan menjadi Heyyyyyyyy?
, dengan satu set 8 y
detik yang cocok. Namun, Woooooooof?
menjadi hanya Heyyyyyyy?
, dengan 7 y
detik.
Sekali lagi, jika Anda bisa membuat program Anda bekerja untuk token input dengan ukuran tidak terbatas, itu bagus, tetapi untuk tujuan tantangan ini, program Anda hanya akan diperiksa untuk memastikan bahwa itu berfungsi dengan baik untuk token input yang tidak memiliki lebih dari 10 huruf berulang .
Semua Bark
-, Woof
-, dan- Grr
token berbasis pada input Anda diasumsikan dimulai dengan huruf kapital. Oleh karena itu, tidak perlu menangani perubahan Bark grrr
menjadi Hey heyy
atau hal serupa lainnya.
Contoh Input dan Output
- Memasukkan:
Bark. Bark! Bark!!
- Keluaran:
Hey. Hey! Hey!!
- Memasukkan:
- Input:
Baaaaaark?
(enama
s) - Output:
Heyyyyyy?
(enamy
s)
- Input:
- Input:
Grrrrrrrr...
(delapanr
s) - Output:
Heyyyyyyy...
( tujuhy
s)
- Input:
- Memasukkan:
?...!
- Keluaran:
?...!
- Memasukkan:
- Memasukkan:
Wooof Woof? Grrrr. Baaaark Grr!
- Keluaran:
Heyy Hey? Heyyy. Heyyyy Hey!
- Memasukkan:
Jawaban:
Retina ,
24181716 byte1 byte disimpan berdasarkan ide dalam jawaban MT0.
Cobalah online!
Penjelasan
Ini hanya mengubah semua huruf menjadi
y
, tetapi jika diikuti olehf
atauk
kami segera menggantinya juga. Dengan menghapusf
dank
kami "menormalkan" panjang kata-kata sehingga mereka sekarang memiliki dua lebihy
dari yang mereka butuhkan.Ini mengubah dua
y
kata pertama dari setiap kata menjadiHe
, menyelesaikan transformasi.sumber
Perl,
514139 bytePemakaian
Memasukkan
Keluaran
Bagaimana itu bekerja
Substitusi regexp sederhana menggunakan pencetakan otomatis
-p
menambahkan 1 byte ke hitungan./ge
mengeksekusi substitusi untuk setiap pola, dan menjalankan penggantian sebagai kode.Versi yang lebih lama menggunakan deteksi tiga arah, tetapi Martin Ender memperhatikan bahwa saya tidak cukup agresif, yang menyelamatkan saya 10 byte.
msh210 memberi tahu saya bahwa Anda tidak perlu tanda kutip di sekitar string
He
, menghemat dua byte.sumber
He
.Python, 106 byte
Demo
https://repl.it/C6Rr
sumber
JavaScript (ES6) -
57555251 BytesUji:
Terima kasih kepada @MartinEnder untuk byte 56 & 51 dan inspirasi untuk beberapa serutan lainnya.
sumber
Vimscript,
51393733322928 byte,Kredit Regex untuk mencukur 9 byte lebih: MT0, Martin Ender, msh210
Demo
Penjelasan:
sumber
\<yy
bukan\<\hy
?Perl 5, 25 byte
Salinan Perl dari jawaban Retina Martin Ender . 24 byte, ditambah 1 untuk
-pe
bukannya-e
.sumber
Javascript,
726664 BytesSunting: dipisahkan
f=
dan berfungsi + jumlah byte dikurangisumber
f=
(sebagai default PPCG), jadi 64 byte berfungsi.Pyke, 35 byte
Coba di sini!
Menghasilkan Heys, Menghasilkan tanda baca, ritsleting bersama, bergabung
sumber
Python 3,
140135134 byteMenggunakan regex untuk menemukan kemunculan karakter yang dapat diganti.
Sunting: Golfed 1 byte spasi putih dan 4 byte untuk mendapatkan nilai dari hasil findall.
Edit2: Golfed 1 byte (Bark's "a" tidak dihitung dengan benar)
sumber