Le bibi-binaire est un système numérique inventé par Boby Lapointe afin de représenter des nombres en lettres dont la prononciation semble amusante.
Votre tâche consiste à convertir des nombres décimaux en Bibi-binaire!
Conversion
Un nombre est converti en base 16 (hexadécimal) et chaque caractère est remplacé par son nom bibi-binaire:
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
Soit N
un entier positif (entre 1 -> 2 ^ 31-1). Pour chaque caractère dans la représentation hexadécimale de N
, remplacez le caractère par sa paire bibi-binaire correspondante (le tableau ci-dessus contient toutes les paires).
Exemple
N
= 156H
= (représentation hexadécimale deN
) -> 9C- 9 -> KA, C -> DO
Ainsi, la sortie est KADO.
Entrée sortie
Vous recevrez un entier 32 bits positif N
, que vous devrez transformer en bibi-binaire.
Vous pouvez (retourner, imprimer, etc ...) dans n'importe quel format pratique, mais les paires doivent être connectées ! Donc KA DO
ça ne serait pas bien, mais ça le KADO
serait.
Les majuscules et les minuscules sont autorisés.
Règles
- Pas de failles.
- C'est le code-golf, donc le code le plus court l'emporte.
Cas de test
2048 -> KOHOHO
156 -> KADO
10000 -> HEBIHAHO
12 -> DO
Réponses:
05AB1E ,
201816 octetsExplication
Essayez-le en ligne!
Enregistré 2 octets grâce à Adnan
la source
…Âkd
est une version compressée de"hbkd"
:).H
convertit également un nombre hexadécimal en base 10.Python 2, 58 octets
Une solution récursive. Essayez-le sur Ideone .
la source
f=lambda n:n*'_'and f(n/16)+"HBKD"[n/4%4]+"OAEI"[n%4]
enregistre 5 octets.Python 2,
8176 octetsChoisit le chiffre bibi pour représenter chaque chiffre hexadécimal en fonction des motifs dans les chiffres bibi.
la source
Javascript (ES6),
585343 octets10 octets enregistrés (plus de support pour n = 0)
Démo
la source
Pyth, 28 octets
Définit une fonction
y
. Fondamentalement, le même algorithme que ma réponse Python .Explication:
Essayez-le ici! (Les deux caractères supplémentaires à la fin sont juste pour appeler la fonction)
la source
Gelée , 17 octets
Essayez-le en ligne! ou vérifier tous les cas de test .
Comment ça marche
la source
Rubis,
5551 octetsUne fonction anonyme récursive:
Appelez-le par exemple avec
f[156]
et il revient"KADO"
la source
J,
3533 octetsGénère la table des valeurs bibi-binaires pour les entiers [0, 16), puis convertit l'entrée n en une liste de 16 chiffres de base et sélectionne le nom bibi-binaire correspondant pour chaque chiffre hexadécimal.
Enregistré 2 octets grâce à @randomra.
Usage
Cette partie génère un tableau 16 x 2 de caractères pour le nom bibi-binaire de chaque chiffre hexadécimal.
Explication
la source
'HBKDOAEI'{~[:(+0 4$~$)4#.inv]
Perl,
5251 octetsComprend +1 pour
-p
Courir avec le numéro sur STDIN
bibi.pl
:la source
PHP, 63 octets
contribution de @Titus Merci
72 octets fonctionne également avec zéro
Version alternative à 76 octets
la source
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;
pour aussi 63 octets ou un port de réponse d'Arnauld pour 61:function f($n){return$n?f($n>>4).HBKD[$n/4&3].OAEI[$n&3]:'';}
H
en premier lieu. Prenez le deuxième.Rubis,
8583 octetsJuste une solution rapide et simple sans encoder la chaîne.
la source
Pyth, 21 octets
Un programme qui prend l'entrée d'un entier de STDIN et imprime le résultat.
Essayez-le en ligne
Comment ça marche
la source
PHP, 93 octets
Cela utilise essentiellement les fonctions hexadécimales intégrées et une petite astuce dans l'instruction while pour économiser sur les accolades.
la source
Java, 224 octets
Utilisation d'une astuce de table de recherche L'utilisation du type Long consistait à raser quelques octets par rapport à Integer
la source
CJam , 20 octets
Essayez-le en ligne!(En tant que suite de tests séparés par des sauts de ligne.)
Explication
la source
Dyalog APL , 19 octets
Requiert
⎕IO←0
ce qui est par défaut sur de nombreux systèmes.∊
enrôler (rendre complètement plat)(
...,
le ravelé'HBKD'∘.,'OAEI'
table de concaténation (c'est-à-dire tous les combos))[
indexé par ...16⊥⍣¯1
l'inverse de la représentation de la base 16 à la base 10 (c'est-à-dire de la base 10 à la base 16)⊢
de⎕
l'entrée numérique]
TryAPL en ligne!
la source
Lua, 196 octets
Lua est ennuyeux pour ce genre de tâche, car il ne contient pas par défaut une méthode de conversion hexadécimale ou binaire. La plupart de la chair le convertit en base 4. Après cela
s=("0"):rep(#s%2)
, nous forçons un 0 derrière si nous devons l'utiliser , puis nous utilisons gsub pour remplacer tous les didgets par leur homologue BIBI.la source
Puce , 174 octets
Essayez-le en ligne!TIO comprend un wrapper Bash qui convertit une chaîne entière en une valeur entière réelle de 32 bits.
La moitié supérieure imprime les lettres correspondant aux données binaires, une fois que la moitié inférieure a détecté que nous avons atteint les données intéressantes (en d'autres termes, nous ignorons les zéros de tête. Pour imprimer tous les zéros de tête, supprimez la deuxième ligne qui commence par
A
et en bas.la source