Bahasa: Oppifikasi
Bahasa yang lucu untuk diucapkan dibuat dengan menerapkan proses berikut untuk setiap kata:
- Tempatkan
op
setelah setiap konsonan. JadiCode
menjadiCopodope
.
Ya itu saja. Untuk tujuan tantangan ini,y
selalu merupakan konsonan.
The Challenge: De-oppification
Diberi kata menentang, kembalikan kata aslinya. Input hanya akan berisi huruf. Huruf pertama dapat ditulis dengan huruf besar. Kata aslinya tidak akan pernah kosong dan akan selalu berisi vokal.
Kasus uji:
Oppified -> Original
a a
I I
itop it
opop op
Opop Op
popopop pop
Copopop Cop
opopopop opop
Kopicopkop Kick
Asopia Asia
soptopopop stop
hopoopopsop hoops
hopoopopedop hooped
ooooohop oooooh
aaaopopaaa aaaopaaa
Popopopsopicoplope Popsicle
gopaloplopopopinopgop galloping
aopopbopopopcopopop aopbopcop
code-golf
string
natural-language
mbomb007
sumber
sumber
op
, jadi jawaban sepanjang barisreplace(/(.)op/, '\1')
tidak akan gagal salah satu dari mereka. Saya sarankan Anda menambahkan kata sepertihoop
ataulooped
ke kasus uji.Jawaban:
V ,
12, 5 byteCobalah online!
Disimpan 7 byte berkat realisasi @ Xnor bahwa karena input harus selalu di-opped, kita tidak perlu memeriksa vokal.
sumber
...op
Membuat saya tertawa jauh lebih keras dari yang seharusnyaRetina , 9 byte
Cobalah online!
Alih-alih memeriksa bahwa karakter sebelumnya adalah konsonan, kami hanya memastikan bahwa arus
op
tidak berdekatan dengan awal string atau kecocokan sebelumnya. Satu-satunya kasus di mana kami dapat mencocokkan yang salahop
adalah jika string asli berisiop
(menghasilkanopop
). Tetapi dalam hal ini kami hanya akan menghapus yang pertama,op
bukan yang kedua dan hasilnya akan sama.sumber
loop
?loop
bukan input yang valid karena Anda tidak bisa mendapatkannya dari menentang kata lain.lopoop
(versi yang ditentangloop
) adalah valid, dan tidak ditolakloop
.loop
adalahlopoopop
.Python , 42 byte
Cobalah online!
Jika saya tidak salah, Anda bisa mengganti semuanya
?op
dengan?
tanpa peduli dengan vokal. Jika string asli berisiop
, maka itu dilawanopop
, dan penggantian mengembalikannyaop
dan tidak lebih lanjut. Ini karena pola yang cocok untuk?op
tidak dapat tumpang tindih, jadi hanya satuop
yang dihapus.Solusi non-regex lebih panjang 5 byte.
Python , 47 byte
Cobalah online
sumber
re
setelah Anda merujuknya‽Perl 5 , 10 + 1 = 11 byte
Cobalah online!
Jalankan dengan
-p
(penalti 1 byte); bahasa golf mungkin melakukan I / O implisit secara otomatis, tetapi Perl membutuhkan opsi untuk itu.Ketika saya melihat jawaban @ xnor , saya menyadari bahwa ini dapat ditingkatkan menggunakan fitur regex khusus Perl;
s/a\Kb/c/g
setara dengans/ab/ac/g
(dengan kata lain,s///
satu - satunya menggantikan hal-hal setelah yang pertama\K
). Jadi begini tampilannya di Perl.sumber
Retina ,
158 byteCobalah online!
-7 byte terima kasih kepada Kevin Cruijssen
sumber
[^aeiou]
with.
. See @xnor's explanation in his Python answer.Go,
10392 bytesMust... compile... Go built-in functions have weird names. :P
Try it online!
sumber
Haskell (
936261 Bytes)thanks to @nimi suggestions in comments!
sumber
v
ando
only once, you can inline it.notElem
is shorter thannot(...elem...)
. You can replace the&&
in a guard with a,
. The last case fora
can be written asa x=x
. No need for()
inx:(a r)
.=="op"
can be replaced with a literal pattern match:a(x:'o':'p':r)|notElem x"aeiouAEIOU"=x:a r
x
and"
.PHP, 36 bytes
Try it online!
sumber
preg_replace
to fix.$argn
is a reserved variable which is availbale when PHP is run with the-R
Option from the command lineJapt, 9 bytes
Try it online
sumber
JavaScript (ES6), 35 bytes
Add
f=
at beginning and invoke likef(arg)
.I am surprised no one posted a JavaScript solution yet....
Test Snippet
sumber
C (gcc), 83 bytes
Try it online!
sumber
///, 18 bytes
Try it online!
Note that this snippet wants to replace
op
with a.
, but later on there is a replacement defined whereop
is being put back into the string. That second instruction would have theop
replaced by a.
(and thus insert a.
into the end result), so I've used a\
between theo
andp
to break the pattern.sumber
APL (Dyalog), 13 bytes
Try it online!
Simply PCRE Replace any character followed by "op" with the character itself.
sumber
Crystal, 39 Bytes
How it works
It simply searches for each consonant, followed by the sequence
op
. If so, replace that sequence only with the consonant found before:([^aeiou])
.Try it online
sumber
Java 8,
3626 bytes-10 bytes by replacing
[^aeiou]
with.
, thanks to @xnor's explanation in his Python answer.Try it here.
sumber
Ruby,
342722 + 1 = 23 bytes-4 bytes thanks to RJHunter.
+1 byte for the
-p
flag.Try it online!
sumber
-p
option will cost a byte but allow your script to start directly withgsub
.sed, 22 bytes
Reads from STDIN until EOF and outputs de-oppified string
Uses same length reduction technique from @xnor's Python answer
sumber
R, 29 bytes
Try it online!
Much like most other solutions here, captures character followed by op, replaces it with character itself.
sumber