Bibi-binary adalah sistem numerik yang diciptakan oleh Boby Lapointe untuk merepresentasikan angka dalam huruf yang pelafalannya terasa lucu.
Tugas Anda adalah mengubah angka desimal menjadi biner Bibi!
Konversi
Sejumlah dikonversi ke basis 16 (heksadesimal) dan setiap karakter diganti dengan nama biner Bibi:
0 = HO
1 = HA
2 = HE
3 = HI
4 = BO
5 = BA
6 = BE
7 = BI
8 = KO
9 = KA
A = KE
B = KI
C = DO
D = DA
E = DE
F = DI
Membiarkan N
menjadi bilangan bulat positif (antara 1 -> 2 ^ 31-1). Untuk setiap karakter dalam representasi heksadesimal N
, ganti karakter dengan pasangan biner Bibi yang sesuai (tabel di atas berisi semua pasangan).
Contoh
N
= 156H
= (representasi heksadesimal dariN
) -> 9C- 9 -> KA, C -> DO
Jadi outputnya adalah KADO.
Input output
Anda akan menerima bilangan bulat 32-bit positif N
, yang harus diubah menjadi Bibi-binary.
Anda dapat (kembali, mencetak, dll ...) dalam format apa pun yang nyaman, tetapi pasangan harus terhubung ! Jadi KA DO
tidak akan apa-apa, tetapi KADO
akan.
Keduanya, huruf kecil dan besar diizinkan.
Aturan
- Tidak ada celah.
- Ini kode-golf, jadi kode terpendek menang.
Testcases
2048 -> KOHOHO
156 -> KADO
10000 -> HEBIHAHO
12 -> DO
sumber
Jawaban:
05AB1E ,
201816 bytePenjelasan
Cobalah online!
Disimpan 2 byte berkat Adnan
sumber
…Âkd
adalah versi terkompresi dari"hbkd"
:).H
juga mengubah angka heksadesimal ke basis 10.Python 2, 58 byte
Solusi rekursif. Cobalah di Ideone .
sumber
f=lambda n:n*'_'and f(n/16)+"HBKD"[n/4%4]+"OAEI"[n%4]
menghemat 5 byte.Python 2,
8176 byteMemilih bibi-digit untuk mewakili setiap digit hex berdasarkan pola dalam bibi-digit.
sumber
Javascript (ES6),
585343 byteDisimpan 10 byte (tidak ada dukungan untuk n = 0 lagi)
Demo
sumber
Pyth, 28 byte
Menentukan fungsi
y
. Algoritma pada dasarnya sama dengan jawaban Python saya .Penjelasan:
Coba di sini! (Dua karakter tambahan di akhir hanya untuk memanggil fungsi)
sumber
Jelly , 17 byte
Cobalah online! atau verifikasi semua kasus uji .
Bagaimana itu bekerja
sumber
Ruby,
5551 byteFungsi anonim rekursif:
Sebut misalnya dengan
f[156]
dan kembali"KADO"
sumber
J,
3533 byteMenghasilkan tabel nilai biner-biner untuk bilangan bulat [0, 16), kemudian mengonversi input n ke daftar basis 16 digit dan memilih nama biner-biner yang sesuai untuk setiap digit hex.
Disimpan 2 byte berkat @randomra.
Pemakaian
Bagian ini menghasilkan array karakter 16 x 2 untuk nama biner-bibi dari setiap digit hex.
Penjelasan
sumber
'HBKDOAEI'{~[:(+0 4$~$)4#.inv]
Perl,
5251 byteTermasuk +1 untuk
-p
Jalankan dengan nomor di STDIN
bibi.pl
:sumber
PHP, 63 Bytes
kontribusi oleh @Titus Terima kasih
72 Bytes juga berfungsi dengan nol
76 Bytes Versi alternatif
sumber
for($n=$argv[1];$n;$n>>=2)$r=HBKDOAEI[$n%4+4*$t=!$t].$r;echo$r;
for($n=$argv[1];$n;$n>>=4)$r=HBKD[$n/4&3].OAEI[$n&3].$r;echo$r;
untuk juga 63 byte atau port jawaban Arnauld untuk 61:function f($n){return$n?f($n>>4).HBKD[$n/4&3].OAEI[$n&3]:'';}
H
di tempat pertama. Ambil yang kedua.Ruby,
8583 byteHanya solusi cepat dan sederhana tanpa menyandikan string.
sumber
Pyth, 21 byte
Program yang mengambil input bilangan bulat dari STDIN dan mencetak hasilnya.
Cobalah online
Bagaimana itu bekerja
sumber
PHP, 93 byte
Ini pada dasarnya memanfaatkan fungsi heksadesimal terintegrasi dan sedikit trik dalam pernyataan while untuk menghemat pada kurung kurawal.
sumber
Java, 224 byte
Menggunakan beberapa tipu daya tabel pencarian Penggunaan tipe Long adalah untuk mengurangi beberapa byte dibandingkan dengan Integer
sumber
CJam , 20 byte
Cobalah online!(Sebagai rangkaian uji yang dipisahkan dengan linefeed.)
Penjelasan
sumber
Dyalog APL , 19 byte
Membutuhkan
⎕IO←0
yang default pada banyak sistem.∊
minta (buat benar-benar rata)(
...,
yang diratakan'HBKD'∘.,'OAEI'
tabel concatenation (yaitu semua kombo))[
diindeks oleh ...16⊥⍣¯1
kebalikan dari basis-16 ke basis 10 (yaitu basis-10 ke basis 16) representasi⊢
dari⎕
input numerik]
TryAPL online!
sumber
Lua, 196 Bytes
Lua menjengkelkan untuk tugas semacam ini, karena tidak per default berisi metode konversi hex atau biner. Sebagian besar daging mengonversinya menjadi basis 4. Setelah itu kami memaksa 0 di belakangnya jika kami perlu menggunakan
s=("0"):rep(#s%2)
, lalu kami menggunakan gsub ganti semua didgets dengan rekan BIBI mereka.sumber
Chip , 174 byte
Cobalah online!TIO mencakup pembungkus Bash yang mengubah string integer menjadi nilai integer 32-bit yang sebenarnya.
Bagian atas mencetak huruf yang sesuai dengan data biner, setelah bagian bawah mendeteksi bahwa kita telah mencapai data yang menarik (dengan kata lain, kita melewatkan angka nol di depan. Untuk mencetak semua angka nol di depan, hapus baris kedua yang dimulai dengan
A
dan turun.sumber