Ketika saya bepergian di masa depan, saya melihat permainan lucu di antara anak-anak sekitar 2275. Ketika mereka tidak ingin orang tua mereka yang hebat-hebat-hebat-besar memahami apa yang mereka katakan, mereka menggunakan bahasa BIBABOBU . Jelas, saya tidak dapat memahami apa pun dengan otak era pra-cyborg saya dan saya merasa (atau secara teknis: saya akan merasa ) benar-benar konyol. Jadi, saya perlu dekoder untuk kunjungan berikutnya.
BIBABOBU?
Meskipun sudah lama tidak digunakan, ASCII masih umum digunakan dalam budaya pop 2275 dan bahasa ini didasarkan padanya.
String dikodekan BIBABOBU seperti itu:
- Ubah semua karakter menjadi kode ASCII mereka.
Ambil representasi heksadesimal 2 digit dari masing-masing kode dan konversikan menggunakan tabel berikut:
0: BI 4: BIDI 8: BADI C: BODI 1: BA 5: BIDA 9: BADA D: BODA 2: BO 6: BIDO A: BADO E: BODO 3: BU 7: BIDU B: BADU F: BODU
Contoh
"Hello!" → 48 65 6C 6C 6F 21 → "BIDIBADI BIDOBIDA BIDOBODI BIDOBODI BIDOBODU BOBA"
Namun, input yang sesuai akan diberikan tanpa ruang untuk meniru intonasi monoton yang digunakan anak-anak untuk membuat ini lebih sulit untuk dipahami tanpa implan:
"BIDIBADIBIDOBIDABIDOBODIBIDOBODIBIDOBODUBOBA"
Klarifikasi dan aturan
- Ingat bahwa saya memerlukan dekoder , bukan encoder.
- Karakter yang didekodekan dijamin berada dalam kisaran [32 ... 126] .
- Input dijamin mengandung en digit jumlah heksadesimal enkode BIBABOBU.
- Anda dapat mengambil input dalam huruf besar atau kecil. Kasing campuran tidak diizinkan.
- Karena bit flips cukup umum selama perjalanan waktu, ini adalah kode-golf untuk meminimalkan risiko.
Uji kasus
NB: Umpan baris digunakan di bawah ini hanya untuk keperluan pemformatan. Anda tidak seharusnya menangani mereka.
Input:
BIDABIDIBIDOBIDABIDUBUBIDUBIDI
Output:
Test
Input:
BIDABIDUBIDOBIDABIDOBODIBIDOBUBIDOBODUBIDOBODABIDOBIDABOBIBIDUBIDIBIDOBODUBOBIBUBOBUBOBUBI
DUBUBIDABOBA
Output:
Welcome to 2275!
Input:
BIDIBADIBIDOBIDABIDOBODIBIDOBODIBIDOBODUBOBODIBOBIBIDABIDIBIDOBADABIDOBODABIDOBIDABOBIBIDA
BIDIBIDUBOBIDOBABIDUBIDOBIDOBIDABIDOBODIBIDOBIDABIDUBOBOBABOBIBIDABADABIDOBODUBIDUBIDABOBI
BIDOBODIBIDOBODUBIDOBODUBIDOBADUBOBIBIDUBUBIDOBODUBOBIBIDOBIDOBIDUBIDABIDOBODOBIDOBODOBIDU
BADABOBA
Output:
Hello, Time Traveler! You look so funny!
Input:
BIDIBABIDOBODOBIDOBIDIBOBIBIDUBADABIDOBODUBIDUBIDABOBIBIDOBIDIBIDOBODUBIDOBODOBOBIDUBIDUBI
DIBOBIBIDUBIDABIDOBODOBIDOBIDIBIDOBIDABIDUBOBIDUBUBIDUBIDIBIDOBABIDOBODOBIDOBIDIBOBIBIDUBI
DUBIDOBADIBIDOBABIDUBIDIBOBIBIDIBADABOBIDUBIDOBODABOBIBIDUBUBIDOBABIDUBADABIDOBADABIDOBODO
BIDOBIDUBOBODIBOBIBIDOBIDIBIDOBODUBOBIBIDUBADABIDOBODUBIDUBIDABUBODUBOBIBIDIBADIBIDOBABOBI
BIDOBADIBIDOBABOBIBIDOBADIBIDOBABOBA
Output:
And you don't understand what I'm saying, do you? Ha ha ha!
sumber
Jawaban:
05AB1E ,
363533 byteDisimpan 1 byte berkat Mr.Xcoder
Disimpan 2 byte berkat KevinCruijssen
Cobalah online! atau sebagai Test Suite
Penjelasan
sumber
'B©¡¦®ì®D…IAO©â'D«‚˜®'U«âJskh2ôJHçJ
bekerja selama 35 byte.©
. Terima kasih :)'B
keć
dan menghapus¦
, karena input akan selalu dimulai dengan 'B'.ć
. Terima kasih!Jelly ,
26242322201715 byteCobalah online!
Bagaimana itu bekerja
sumber
Perl 6 , 58 byte
Cobalah online!
Sangat terilhami oleh solusi Dennis 'Jelly. Menggunakan fungsi sihir berbeda
x³ % 87 % 4
yang juga memetakan kode ASCIIIAOUBD
untuk012302
.Alternatif
7574 byte versi-1 byte terima kasih kepada Jo King
Cobalah online!
Alternatif versi 85 byte
Cobalah online!
sumber
(^16)>>.base(16)
-1 bytePython 2 ,
100979695 byte-1 byte terima kasih kepada ovs
-1 byte terima kasih kepada GB
Cobalah online!
sumber
Perl 5 -p, 67 byte
Cobalah online!
sumber
05AB1E (warisan),
68656059 byteInput dalam huruf kecil.
-3 byte secara implisit berkat @Emigna berubah
'b¡εg>}s£
menjadi'b©¡®ì
.Cobalah secara online atau verifikasi semua kasus uji .
Juga, pasti bisa bermain golf dengan sesuatu yang lebih pintar daripada string terkompresi besar. Akan melihat lagi nanti.Jawaban yang lebih pendek sudah disediakan oleh @Emigna , jadi pastikan untuk membatalkannya!Penjelasan:
sumber
Perl 6 ,
88 8684 byteCobalah online!
sumber
R ,
141135 byteCobalah online!
Terima kasih kepada JayCe karena telah menghemat 6 byte!
Menggunakan beberapa sihir modular mungkin lebih pendek, tapi saya cukup senang dengan ini sebagai pass pertama yang naif.
sumber
%*%
saya lihat. :-) Anda juga dapat menempatkan`:`
sebagai argumen fungsi jika Anda ingin menggunakan ini bersama-sama dengan sesuatu yang lain!Japt,
432928 byteTidak mengherankan, solusi port Dennis 'Jelly jauh lebih pendek.
Menghasilkan array karakter.
Cobalah
Asli, 42 byte
Cobalah
Penjelasan
sumber
C (gcc) ,
181138136 byteSemoga akan ada kompiler C di masa depan untuk mengkompilasi ini! :-)
Terima kasih kepada Max Yekhlakov dan ceilingcat untuk sarannya.
Cobalah online!
Seandainya kompiler C di masa depan hanya memahami ASCII BIBABOBU-ified :-)
(Encoder Cobalah online! )
sumber
c=printf(&v),v=0
daripadav=!putchar(v),c=1
JavaScript (Node.js) ,
131128 byteCobalah online! Tautan termasuk kasus uji. Versi alternatif, juga 131 byte:
Cobalah online! Tautan termasuk kasus uji. Sunting: Menghemat 3 byte berkat @Shaggy.
sumber
unescape()
adalah ide yang bagus.indexOf
->search
untuk menyimpan byte.r
.Bash + utilitas Linux umum, 75 byte
Cobalah online!
sumber
Scala , 305 byte
Yah, saya cukup yakin ini bisa bermain golf. Tapi tetap saja, itu ada. Mengambil huruf kecil input.
f
mencetak hasilnya di stdout.Suntingan: -8 karakter berkat saya tidak lagi bodoh (spasi); -13 karakter berkat crater2150
Cobalah online!
sumber
dropRight(1)
denganinit
,Seq("").drop(1)
denganSeq[String]()
, danmap(b=>a+b)
denganmap(a+_)
map(a+_)
bekerja tetapi saya tahu saya bisa melakukannya. terima kasih untuk tips lainnya!Python 2 ,
142139127118 byteCobalah online!
sumber
Python 2 , 93 byte
Cobalah online!
sumber
Ruby ,
8675 byteCobalah online!
sumber
Dyalog APL,
7472 byteSolusi tingkat pemula di Dyalog APL (baru mulai belajar ini beberapa hari yang lalu!). Mendefinisikan dfn yang membutuhkan satu argumen benar (input). 72 karakter, 72 byte saat menggunakan enkode dyalog. Berdasarkan solusi Emigna di 05AB1E.
sumber
Jelly , 39 byte
Cobalah online!
Teknik yang digunakan sangat mirip dengan Emigna . Saya akan golf ini lebih jauh segera, mudah-mudahan.
sumber
Brain-Flak , 178 byte
Cobalah online!
Penjelasan
sumber
05AB1E , 30 byte
Port jawaban Jelly @Dennis 'gila (hanya dengan builtin kurang nyaman). Jadi pastikan untuk mendukungnya!
Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
sumber
Java (JDK 10) , 199 byte
Cobalah online!
Kredit
sumber
-~d
bukan(d+1)
?char
s sebagai gantinya dan ketika saya kembali ke versi pertama saya, saya benar-benar lupa lagi. ;)VBA (Excel), dengan
322244 byte yang menakjubkanYa, dan aku MENCINTAI heksadesimal. (Belum ada font sarkasme, jadi saya menggunakan huruf miring untuk saat ini)
Saya akan menambahkan komentar jika ada yang mau, tapi saya pikir itu sudah jelas.Golf terjadi.Dengan Komentar:
Saya benar-benar mencoba memasukkan ini ke dalam VB Immediate Window, tetapi sepertinya tidak berfungsi di sana ... saya pikir akan memotong 11 karakter. Saya juga ingin memasukkan pernyataan Match ke dalam tanda kurung, tapi itu menyebabkan kesalahan diam setiap saat. Bantuan dihargai: D
sumber
Array("I","A","O","U","II","IA","IO","IU","AI","AA","AO","AU","IO","OA","OO","OU")
->Split("I A O U II IA IO IU AI AA AO AU IO OA OO OU")
danNot IsError(c)
->IsError(c)=0
Haxe , 228 byte
Bukan yang terbaik, nama fungsi perpustakaan standar terlalu besar :(
Cobalah online!
sumber
Pyth, 35 byte
Output sebagai daftar karakter.
Coba di sini
Penjelasan
sumber
Arang , 36 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Ulangi setiap karakter input dan alihkan.
Jika itu
B
maka dorong0
ke daftar kosong yang telah ditetapkan.Jika a
D
maka pop nilai terakhir, tambahkan, kalikan dengan4
, dan dorong lagi.Jika tidak, cari indeks dalam string
AOU
, tambahkan, dan tambahkan ke nilai terakhir.Membagi daftar menjadi pasangan nilai, mendekode sebagai basis 16, dikonversi ke ASCII, dan cetak secara implisit.
sumber
Bersih ,
145134 byteCobalah online!
Dijelaskan:
sumber
PHP, 119 byte
mengasumsikan input huruf besar. Jalankan sebagai pipa dengan
-nR
atau coba online .membutuhkan PHP 7.1
untuk PHP yang lebih lama, gunakan
substr($m,-3,1)
dansubstr($m,-1)
bukannya$m[-<x>]
(+16 byte);untuk PHP yang lebih muda, masukkan
B
,XIAO
danIAOU
dalam tanda kutip untuk menghindari pesan peringatan (+10 byte).sumber
05AB1E , 40 byte
Cobalah online!
sumber
PHP, 163 byte
Panggil
f(string $s)
dengan string karakter bibabobu-encoded yang sesuai, dan itu akan mencetak string yang diterjemahkan.sumber
Python 3, 199 byte
Bukan yang terpendek tetapi tanpa loop.
sumber