Bibi-Binär ist ein numerisches System, das von Boby Lapointe erfunden wurde , um Zahlen in Buchstaben darzustellen, deren Aussprache lustig erscheint.
Ihre Aufgabe ist es, Dezimalzahlen in Bibi-Binär umzuwandeln!
Umwandlung
Eine Zahl wird zur Basis 16 (hexadezimal) konvertiert und jedes Zeichen wird durch seinen bibibinären Namen ersetzt:
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
Sei N
eine positive ganze Zahl (zwischen 1 -> 2 ^ 31-1). N
Ersetzen Sie für jedes Zeichen in der hexadezimalen Darstellung von das Zeichen durch das entsprechende Bibi-Binär-Paar (die obige Tabelle enthält alle Paare).
Beispiel
N
= 156H
= (hexadezimale Darstellung vonN
) -> 9C- 9 -> KA, C -> DO
Der Ausgang ist also KADO.
Input-Output
Sie erhalten eine positive 32-Bit-Ganzzahl N
, die Sie in Bibi-Binär umwandeln müssen.
Sie können (Rückgabe, Druck, etc ...) in jedem geeigneten Format, aber die Paare müssen verbunden sein ! Also KA DO
wäre nicht in Ordnung, KADO
würde aber .
Sowohl Kleinbuchstaben als auch Großbuchstaben sind zulässig.
Regeln
- Keine Lücken.
- Das ist Code-Golf, also gewinnt der kürzeste Code.
Testfälle
2048 -> KOHOHO
156 -> KADO
10000 -> HEBIHAHO
12 -> DO
quelle
Antworten:
05AB1E ,
201816 BytesErläuterung
Probieren Sie es online!
2 Bytes gespart dank Adnan
quelle
…Âkd
ist eine komprimierte Version von"hbkd"
:).H
wandle aber auch eine Hexadezimalzahl in Basis 10 um.Python 2, 58 Bytes
Eine rekursive Lösung. Probieren Sie es auf Ideone .
quelle
f=lambda n:n*'_'and f(n/16)+"HBKD"[n/4%4]+"OAEI"[n%4]
spart 5 Bytes.Python 2,
8176 BytesWählt die Bibi-Ziffer, um jede Hex-Ziffer basierend auf den Mustern in den Bibi-Ziffern darzustellen.
quelle
Javascript (ES6),
585343 Bytes10 Bytes gespeichert (keine Unterstützung für n = 0 mehr)
Demo
quelle
Pyth, 28 Bytes
Definiert eine Funktion
y
. Grundsätzlich der gleiche Algorithmus wie meine Python-Antwort .Erläuterung:
Probieren Sie es hier aus! (Die zusätzlichen zwei Zeichen am Ende dienen nur zum Aufrufen der Funktion.)
quelle
Gelee , 17 Bytes
Probieren Sie es online! oder überprüfen Sie alle Testfälle .
Wie es funktioniert
quelle
Ruby,
5551 BytesEine rekursive anonyme Funktion:
Nenne es zum Beispiel mit
f[156]
und es kehrt zurück"KADO"
quelle
J,
3533 BytesErzeugt die Tabelle der bibibinären Werte für Ganzzahlen [0, 16), konvertiert dann die Eingabe n in eine Liste von 16-stelligen Basisziffern und wählt den entsprechenden bibibinären Namen für jede hexadezimale Ziffer aus.
2 Bytes dank @randomra gespeichert.
Verwendung
Dieser Teil generiert ein 16 x 2-Array von Zeichen für den bibibinären Namen jeder hexadezimalen Ziffer.
Erläuterung
quelle
'HBKDOAEI'{~[:(+0 4$~$)4#.inv]
Perl,
5251 BytesBeinhaltet +1 für
-p
Führen Sie mit der Nummer auf STDIN
bibi.pl
:quelle
PHP, 63 Bytes
Beitrag von @Titus Danke
72 Bytes funktioniert auch mit Null
76 Bytes alternative Version
quelle
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;
für auch 63 Bytes oder ein Port von Arnauld's Antwort für 61:function f($n){return$n?f($n>>4).HBKD[$n/4&3].OAEI[$n&3]:'';}
H
an erster Stelle. Nimm den zweiten.Ruby,
8583 BytesNur eine schnelle und einfache Lösung, ohne die Zeichenfolge zu codieren.
quelle
Pyth, 21 Bytes
Ein Programm, das die Eingabe einer Ganzzahl von STDIN übernimmt und das Ergebnis ausgibt.
Probieren Sie es online aus
Wie es funktioniert
quelle
PHP, 93 Bytes
Dies nutzt im Grunde die integrierten hexadezimalen Funktionen und einen kleinen Trick in der while-Anweisung, um geschweifte Klammern zu sparen.
quelle
Java, 224 Bytes
Verwenden einiger Nachschlagetabellen-Tricks Die Verwendung des Typs "Long" bestand darin, einige Bytes im Vergleich zu "Integer" zu sparen
quelle
CJam , 20 Bytes
Probieren Sie es online! (Als durch Zeilenvorschub getrennte Testsuite.)
Erläuterung
quelle
Dyalog APL , 19 Bytes
Benötigt,
⎕IO←0
was auf vielen Systemen Standard ist.∊
eintragen (komplett flach machen)(
...,
das verwirrte'HBKD'∘.,'OAEI'
Verkettungstabelle (dh alle Kombinationen))[
indiziert von ...16⊥⍣¯1
die Umkehrung der Darstellung von Basis 16 zu Basis 10 (dh Basis 10 zu Basis 16)⊢
von⎕
die numerische Eingabe]
TryAPL online!
quelle
Lua, 196 Bytes
Lua nervt für diese Art von Aufgabe, da sie standardmäßig keine hexadezimale oder binäre Konvertierungsmethode enthält. Das meiste Fleisch wandelt es in Basis 4 um. Danach zwingen wir eine 0 dahinter, wenn wir verwenden müssen
s=("0"):rep(#s%2)
, dann ersetzen wir alle Didgets mit gsub durch ihr BIBI-Gegenstück.quelle
Chip , 174 Bytes
Probieren Sie es online! TIO enthält einen Bash-Wrapper, der eine Ganzzahl in einen tatsächlichen 32-Bit-Ganzzahlwert konvertiert.
Die obere Hälfte druckt die Buchstaben aus, die den Binärdaten entsprechen. Sobald die untere Hälfte festgestellt hat, dass wir die interessanten Daten erreicht haben, überspringen wir führende Nullen. Um alle führenden Nullen zu drucken, entfernen Sie die zweite Zeile, die mit beginnt
A
und runter.quelle