Bibi-binary es un sistema numérico inventado por Boby Lapointe para representar números en letras cuya pronunciación parece divertida.
¡Su tarea es convertir números decimales en bibi-binario!
Conversión
Un número se convierte en base 16 (hexadecimal) y cada carácter se reemplaza por su nombre Bibi-binario:
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
Sea N
un número entero positivo (entre 1 -> 2 ^ 31-1). Para cada carácter en la representación hexadecimal de N
, reemplace el carácter por su par Bibi-binario correspondiente (la tabla anterior contiene todos los pares).
Ejemplo
N
= 156H
= (representación hexadecimal deN
) -> 9C- 9 -> KA, C -> DO
Por lo tanto, la salida es KADO.
De entrada y salida
Recibirá un entero positivo de 32 bits N
, que deberá convertir en Bibi-binary.
Puede (devolver, imprimir, etc.) en cualquier formato conveniente, ¡ pero los pares deben estar conectados ! Entonces KA DO
no estaría bien, pero lo KADO
estaría.
Se permiten tanto minúsculas como mayúsculas .
Reglas
- No hay escapatorias.
- Este es el código de golf, por lo que gana el código más corto.
Casos de prueba
2048 -> KOHOHO
156 -> KADO
10000 -> HEBIHAHO
12 -> DO
fuente
Respuestas:
05AB1E ,
201816 bytesExplicación
Pruébalo en línea!
Guardado 2 bytes gracias a Adnan
fuente
…Âkd
es una versión comprimida de"hbkd"
:).H
también convierte un número hexadecimal a base 10.Python 2, 58 bytes
Una solución recursiva. Pruébalo en Ideone .
fuente
f=lambda n:n*'_'and f(n/16)+"HBKD"[n/4%4]+"OAEI"[n%4]
ahorra 5 bytes.Python 2,
8176 bytesElige el dígito bibi para representar cada dígito hexadecimal en función de los patrones en los dígitos bibi.
fuente
Javascript (ES6),
585343 bytes10 bytes guardados (ya no se admite n = 0)
Manifestación
fuente
Pyth, 28 bytes
Define una función
y
. Básicamente el mismo algoritmo que mi respuesta de Python .Explicación:
Pruébalo aquí! (Los dos caracteres adicionales al final son solo para llamar a la función)
fuente
Jalea , 17 bytes
Pruébalo en línea! o verificar todos los casos de prueba .
Cómo funciona
fuente
Ruby,
5551 bytesUna función anónima recursiva:
Llámalo por ejemplo con
f[156]
y devuelve"KADO"
fuente
J,
3533 bytesGenera la tabla de valores bibi-binarios para enteros [0, 16), luego convierte la entrada n en una lista de 16 dígitos base y selecciona el nombre bibi-binario correspondiente para cada dígito hexadecimal.
Guardado 2 bytes gracias a @randomra.
Uso
Esta parte genera una matriz de caracteres de 16 x 2 para el nombre bibi-binario de cada dígito hexadecimal.
Explicación
fuente
'HBKDOAEI'{~[:(+0 4$~$)4#.inv]
Perl,
5251 bytesIncluye +1 para
-p
Ejecutar con el número en STDIN
bibi.pl
:fuente
PHP, 63 bytes
contribución de @Titus Gracias
72 Bytes funciona también con cero
Versión alternativa de 76 bytes
fuente
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;
para también 63 bytes o un puerto de la respuesta de Arnauld para 61:function f($n){return$n?f($n>>4).HBKD[$n/4&3].OAEI[$n&3]:'';}
H
en primer lugar. Toma el segundo.Ruby,
8583 bytesSolo una solución rápida y simple sin codificar la cadena.
fuente
Pyth, 21 bytes
Un programa que toma la entrada de un número entero de STDIN e imprime el resultado.
Pruébalo en línea
Cómo funciona
fuente
PHP, 93 bytes
Básicamente, esto aprovecha las funciones hexadecimales integradas y un pequeño truco en la instrucción while para ahorrar en llaves.
fuente
Java, 224 bytes
El uso de algunos trucos de la tabla de búsqueda El uso del tipo Long fue reducir algunos bytes en comparación con Integer
fuente
CJam , 20 bytes
Pruébalo en línea! (Como un conjunto de pruebas separado por salto de línea).
Explicación
fuente
Dyalog APL , 19 bytes
Requiere
⎕IO←0
cuál es el predeterminado en muchos sistemas.∊
alistarse (hacer completamente plano)(
...,
el desvencijado'HBKD'∘.,'OAEI'
tabla de concatenación (es decir, todos los combos))[
indexado por ...16⊥⍣¯1
la inversa de la representación de base 16 a base 10 (es decir, base 10 a base 16)⊢
de⎕
la entrada numérica]
TryAPL en línea!
fuente
Lua, 196 bytes
Lua es molesto para este tipo de tarea, ya que por defecto no contiene un método de conversión hexadecimal o binario. La mayor parte de la carne lo está convirtiendo en base 4. Después de eso
s=("0"):rep(#s%2)
, forzamos un 0 detrás de él si necesitamos usarlo , luego usando gsub reemplazamos todos los didgets con su contraparte BIBI.fuente
Chip , 174 bytes
Pruébalo en línea!TIO incluye un contenedor Bash que convierte una cadena entera en un valor entero real de 32 bits.
La mitad superior imprime las letras correspondientes a los datos binarios, una vez que la mitad inferior ha detectado que hemos alcanzado los datos interesantes (en otras palabras, omitimos los ceros iniciales. Para imprimir todos los ceros iniciales, elimine la segunda línea que comienza con
A
y abajo.fuente