(Artinya: Konversi Bahasa Inggris ke Bleet)
Kami telah memuji kambing sebagai dewa selama bertahun-tahun sekarang.
Tetapi jika kita tidak dapat menerjemahkan bahasa Inggris ke 'Bleet', bahasa Goat God, kita tidak dapat berkomunikasi dengan mereka.
Jadi, untuk berkomunikasi dengan mereka, kami telah meneliti aktivitas kambing, dan mengambil pola ini, yang merupakan inti dari bahasa tersebut.
Ucapkan 'Bleet' untuk panjang setiap kata. Itu berarti jumlah 'e' harus (panjang-3) untuk kata-kata yang lebih panjang dari 3 huruf. Anda harus mengurangi 'Bleet' untuk kata-kata yang lebih pendek dari 'Blt'. Misalnya, 'menjadi' menjadi 'bl', tetapi 'kucing' dan 'kapal' menjadi 'blt' dan 'blet'.
Sepertinya, mereka tidak benar-benar mengubah karakter non-alfabet menjadi 'Bleet'. Penelitian kami menunjukkan bahwa 'Halo, Dunia!' untuk Bleet adalah 'Bleet, Bleet!' bukan 'Bleeet Bleeet'. Juga, Kambing tidak begitu cerdas (jangan tersinggung), sehingga mereka tampaknya tidak mengerti karakter atau diakritik non-ascii sama sekali.
Sekarang, saatnya membuat penerjemah untuk berkomunikasi dengan para dewa kambing.
Bleeeeet (Artinya: Contoh)
Hello, World! => Bleet, Bleet!
lorem ipsum dolor sit amet. => Bleet Bleet Bleet Blt Blet.
We praise the Goat God! => Bl Bleeet Blt Blet Blt!
I have a pen => B Blet B Blt
0123456789_ => 0123456789_
0te_st1 => 0Bl_Bl1
it's
menjadiBlt
atauBl't
atauBl'B
?Jimmy's
:Bleee't
), memperlakukan mereka sebagai pemisahan kata (Jimmy's
:Bleet'B
), atau memperlakukan mereka sebagai bagian dari kata-kata (Jimmy's
:Bleeeet
). Jika saya harus memilih satu, saya akan memilih opsi pemisah kata, karena itulah yang dilakukan oleh 6 jawaban.Jawaban:
Retina , 31 byte
Cobalah online!
Penjelasan
Ubah semua huruf menjadi
e
s.Ubah yang pertama
e
di setiap lari keB
.Berubah
Be
menjadiBl
.Ubah yang terakhir
e
di setiap run menjadit
.sumber
T1L
yangT
tahap "membungkus" pasangan terjemahan sehingga Anda dapat mengubah semua huruf seperti itu untuke
l
, bukan1
, tapi saya tidak yakin apa yang Anda maksud dengan "bungkus". Transliterasi hanya mengulangi karakter terakhir dalam pola target, jadi jika yaT`lL`ef
, Anda akan memetakana
kee
dan semua huruf lainnyaf
, tidak secara bergantian kee
danf
.JavaScript (ES6),
797774 bytePendekatan alternatif, saat ini
8378 byte:Yang terbaik yang bisa saya lakukan secara rekursif adalah 88 byte:
sumber
'Blet'[i>1?2+!x[i+1]:i]
tetapi sayangnya itu memiliki panjang yang sama.PHP,
11588867775 bytepreg_replace
dengan array (membutuhkan PHP 5.4 atau yang lebih baru)Jalankan dengan
echo '<string>' | php -nR '<code>'
atau coba online .kerusakan
Revisi 5: disimpan 9 byte dengan rantai regex Martin Ender .
(Itu juga memperbaiki kasus dengan karakter kata non-alfabet = digit / garis bawah.)
sumber
Haskell ,
135128 byteCobalah online! Penggunaan
(""!) $ "some string"
. Tanpa regex, ini ternyata cukup panjang, mungkin beberapa pendekatan lain lebih pendek. Sunting: Disimpan 7 byte berkat @nimi!sumber
b
untuka
Anda dapat menerapkannya segera ketika membangun string yang dihasilkan dan menghilangkan final=<<
:b!(l:t)|...|1<3=a b++l:""!t;b!_=a b;(""!)
.Perl 5 , 47 byte
Disimpan 15 byte dengan menggunakan teknik yang sama seperti jawaban Retina Martin Ender . (Jawaban ini pada dasarnya adalah port dari jawabannya sekarang)
46 byte kode +
-p
bendera.Cobalah online!
Versi yang lebih lama: 62 byte:
Dan 68 byte:
sumber
PHP, 84 Bytes
PHP, 117 Bytes
sumber
-1+$l=...
\bl
gagal untuk karakter kata non-abjad:_we_
. Anda perlu sebuah pernyataan eksplisit:(?<!l)l
. Sama untuke\b
->e(?!e)
(+7 byte)C,
1201511401111081051049290 BytesBekerja untuk "Ini uji coba Jimmy" -> Bl'B Bleet'B Blet
Outputnya sekarang merupakan efek samping dengan menghancurkan string asli.
Saya pikir itu setidaknya benar sekarang
sumber
Python 2.7,
129118114109959188 byteHanya sebuah
re.sub
rantaiSelangkah demi selangkah
Input contoh: " Kami memuji Dewa Kambing! "
Sub alias sehingga kami dapat menyimpan byte pada panggilan berulang
Ganti semua karakter kata dengan "e"
s("\w","e",i)
Keluaran:
ee eeeeee eee eeee eee!
Ganti semua "e" yang diawali dengan batas kata (Awal kata) dengan "B"
s(r"\be","B",s("\w","e",i))
Keluaran:
Be Beeeee Bee Beee Bee!
Ganti semua "Jadilah" dengan "Bl"
s("Be","Bl",s(r"\be","B",s("\w","e",i)))
Keluaran:
Bl Bleeee Ble Blee Ble!
Ganti semua "e" yang diikuti oleh batas kata dengan "t"
s(r"e\b","t",s("Be","Bl",s(r"\be","B",s("\w","e",i))))
Keluaran:
Bl Bleeet Blt Blet Blt!
sumber
return
denganprint
harus menghemat satu byte.r
dari string mentah jika mereka tidak memiliki serangan balik di dalamnya menyimpan 3 byte lainnyar
) dan saya turun ke 95 byte. Terima kasih untuk sarannya!Pip , 28 byte
Mengambil input sebagai argumen baris perintah. Cobalah online!
Penjelasan
Ini menyenangkan - saya harus menggunakan pengubah regex dan interpolasi string.
sumber
Python 3, 271 byte
Saya sadar bahwa ini agak panjang dan saya menyambut saran tentang cara mengurangi panjangnya.
sumber
x.append(y)
atau dalam kasusa(x,y)
Anda,, Anda dapat melakukanx+=y,
(diperlukan koma)ditumpuk , 57 byte
Cobalah online! Mengambil input dari atas tumpukan.
Biarkan a ( n ) = A136412 ( n - 2) = (5 × 4 n - 2 + 1) ÷ 3. Konversi a ( n ) menjadi basis 4 menghasilkan:
Memetakan indeks 0..3 ke string
Blet
, kita mendapatkan:Sekarang, mengawali
B
memberi kita string yang diinginkan, mengingat panjangnya. Kebanyakan. Satu hanya perlu menangani kasus khusus untuk n ≤ 2. Dalam kasus saya, ini diselesaikan dengan mengurangi ( n - 2 <1) sebagai boolean numerik (1 untuk "benar" dan 0 untuk "salah").Adapun spesifik dari jawabannya:
sumber
Python 2 ,
137114 byteCobalah online!
sumber
Java 7, 201 byte
Tidak benar-benar senang dengan itu, dan tentu saja bisa bermain golf lagi ..
Penjelasan:
Kode uji:
Coba di sini.
Keluaran:
sumber
s.split("")
bukannyas.toCharArray()
menghemat beberapa saya percayax=c&~32
tidak akan berfungsi pada String, danx>64&x<91
keduanya tidak akan berfungsi lagi). Jika Anda bisa membuatnya lebih pendek dengan perpecahan, beri tahu saya.05AB1E , 36 byte
Cobalah online! atau sebagai Test suite
Penjelasan
Siapkan input:
Ini membuat daftar seperti
['hello', ', ', 'world', '!']
untuk inputHello, World!
Iterate over list:
sumber