Bibi-binário é um sistema numérico inventado por Boby Lapointe para representar números em letras cuja pronúncia parece engraçada.
Sua tarefa é converter números decimais em bibi-binário!
Conversão
Um número é convertido na base 16 (hexadecimal) e cada caractere é substituído pelo seu nome bibi-binário:
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
Seja N
um número inteiro positivo (entre 1 -> 2 ^ 31-1). Para cada caractere na representação hexadecimal de N
, substitua o caractere pelo par Bibi-binário correspondente (a tabela acima contém todos os pares).
Exemplo
N
= 156H
= (representação hexadecimal deN
) -> 9C- 9 -> KA, C -> DO
Assim, a saída é KADO.
Entrada e saída
Você receberá um número inteiro positivo de 32 bits N
, que deverá ser transformado em bibi-binário.
Você pode (devolver, imprimir, etc ...) em qualquer formato conveniente, mas os pares precisam estar conectados ! Então KA DO
, não ficaria bem, mas KADO
ficaria.
Ambos, minúsculas e maiúsculas são permitidos.
Regras
- Sem brechas.
- Isso é código-golfe, então o código mais curto vence.
Casos de teste
2048 -> KOHOHO
156 -> KADO
10000 -> HEBIHAHO
12 -> DO
fonte
Respostas:
05AB1E ,
201816 bytesExplicação
Experimente online!
Economizou 2 bytes graças a Adnan
fonte
…Âkd
é uma versão compactada do"hbkd"
:).H
também converte um número hexadecimal de base 10.Python 2, 58 bytes
Uma solução recursiva. Experimente em Ideone .
fonte
f=lambda n:n*'_'and f(n/16)+"HBKD"[n/4%4]+"OAEI"[n%4]
salva 5 bytes.Python 2,
8176 bytesEscolhe o dígito bibi para representar cada dígito hexadecimal com base nos padrões nos dígitos bibi.
fonte
Javascript (ES6),
585343 bytes10 bytes salvos (não há mais suporte para n = 0)
Demo
fonte
Pitão, 28 bytes
Define uma função
y
. Basicamente, o mesmo algoritmo da minha resposta em Python .Explicação:
Experimente aqui! (Os dois caracteres extras no final são apenas para chamar a função)
fonte
Geléia , 17 bytes
Experimente online! ou verifique todos os casos de teste .
Como funciona
fonte
Ruby,
5551 bytesUma função anônima recursiva:
Chame por exemplo com
f[156]
e retorna"KADO"
fonte
J,
3533 bytesGera a tabela de valores bibi-binários para números inteiros [0, 16), depois converte a entrada n em uma lista de 16 dígitos base e seleciona o nome bibi-binário correspondente para cada dígito hexadecimal.
Guardado 2 bytes graças a @randomra.
Uso
Esta parte gera uma matriz de 16 x 2 de caracteres para o nome bibi-binário de cada dígito hexadecimal.
Explicação
fonte
'HBKDOAEI'{~[:(+0 4$~$)4#.inv]
Perl,
5251 bytesInclui +1 para
-p
Corra com o número em STDIN
bibi.pl
:fonte
PHP, 63 bytes
Contribuição de @Titus Thank You
72 bytes trabalha também com zero
Versão alternativa de 76 bytes
fonte
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;
por 63 bytes ou uma resposta da porta de Arnauld para 61:function f($n){return$n?f($n>>4).HBKD[$n/4&3].OAEI[$n&3]:'';}
H
em primeiro lugar. Pegue o segundo.Ruby,
8583 bytesApenas uma solução rápida e simples sem codificar a string.
fonte
Pitão, 21 bytes
Um programa que recebe a entrada de um número inteiro de STDIN e imprime o resultado.
Experimente online
Como funciona
fonte
PHP, 93 bytes
Isso basicamente aproveita as funções hexadecimais integradas e um pequeno truque na instrução while para economizar em chaves.
fonte
Java, 224 bytes
Usando alguns truques da tabela de pesquisa O uso do tipo Long foi para depilar alguns bytes em comparação com o Número Inteiro
fonte
CJam , 20 bytes
Experimente online! (Como um conjunto de testes separado por avanço de linha.)
Explicação
fonte
Dyalog APL , 19 bytes
Requer
⎕IO←0
qual é o padrão em muitos sistemas.∊
alistar-se (deixar completamente plano)(
...,
o enredado'HBKD'∘.,'OAEI'
tabela de concatenação (ou seja, todos os combos))[
indexado por ...16⊥⍣¯1
o inverso da representação da base 16 à base 10 (isto é, base 10 à base 16)⊢
do⎕
a entrada numérica]
TryAPL online!
fonte
Lua, 196 bytes
Lua é irritante para esse tipo de tarefa, pois, por padrão, não contém um método de conversão hexadecimal ou binário. A maior parte da carne está convertendo-a para a base 4. Depois disso, forçamos um 0 por trás, se precisarmos usar
s=("0"):rep(#s%2)
, então, usando gsub substituímos todos os didgets por seus equivalentes BIBI.fonte
Chip , 174 bytes
Experimente online! O TIO inclui um wrapper Bash que converte uma sequência inteira em um valor inteiro real de 32 bits.
A metade superior imprime as letras correspondentes aos dados binários, uma vez que a metade inferior detecta que alcançamos os dados interessantes (em outras palavras, pulamos os zeros iniciais. Para imprimir todos os zeros iniciais, remova a segunda linha que começa com
A
e para baixo.fonte