Bibi-binary to system numeryczny opracowany przez Boby Lapointe w celu przedstawienia liczb w literach, których wymowa wydaje się śmieszna.
Twoim zadaniem jest konwersja liczb dziesiętnych na Bibi-binary!
Konwersja
Liczba jest konwertowana na podstawową 16 (szesnastkową), a każdy znak jest zastępowany przez bibi-binarną nazwę:
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
Niech N
będzie liczbą całkowitą dodatnią (między 1 -> 2 ^ 31-1). Dla każdego znaku w reprezentacji szesnastkowej N
zamień znak na odpowiednią parę bibi-binarną (powyższa tabela zawiera wszystkie pary).
Przykład
N
= 156H
= (reprezentacja szesnastkowaN
) -> 9C- 9 -> KA, C -> DO
Zatem wyjściem jest KADO.
Wejście wyjście
Otrzymasz dodatnią 32-bitową liczbę całkowitą N
, którą będziesz musiał przekształcić w Bibi-binary.
Możesz (zwrócić, wydrukować itp.) W dowolnym dogodnym formacie, ale pary muszą być połączone ! Więc KA DO
nie byłoby dobrze, ale KADO
byłoby.
Zarówno małe, jak i wielkie litery są dozwolone.
Zasady
- Bez luk.
- To jest golf golfowy, więc wygrywa najkrótszy kod.
Przypadki testowe
2048 -> KOHOHO
156 -> KADO
10000 -> HEBIHAHO
12 -> DO
źródło
Odpowiedzi:
05AB1E ,
201816 bajtówWyjaśnienie
Wypróbuj online!
Zaoszczędzono 2 bajty dzięki Adnan
źródło
…Âkd
jest skompresowaną wersją"hbkd"
:).H
również konwertuje liczbę szesnastkową na bazę 10.Python 2, 58 bajtów
Rozwiązanie rekurencyjne. Wypróbuj na Ideone .
źródło
f=lambda n:n*'_'and f(n/16)+"HBKD"[n/4%4]+"OAEI"[n%4]
oszczędza 5 bajtów.Python 2,
8176 bajtówWybiera cyfrę bibi, która będzie reprezentować każdą cyfrę szesnastkową na podstawie wzorów w cyfrach bibi.
źródło
JavaScript (ES6),
585343 bajtyZapisano 10 bajtów (brak wsparcia dla n = 0)
Próbny
źródło
Pyth, 28 bajtów
Definiuje funkcję
y
. Zasadniczo ten sam algorytm jak moja odpowiedź w języku Python .Wyjaśnienie:
Wypróbuj tutaj! (Dodatkowe dwa znaki na końcu to tylko wywołanie funkcji)
źródło
Galaretka , 17 bajtów
Wypróbuj online! lub zweryfikuj wszystkie przypadki testowe .
Jak to działa
źródło
Rubinowy,
5551 bajtówRekurencyjna anonimowa funkcja:
Nazwij to na przykład za pomocą
f[156]
i zwraca"KADO"
źródło
J,
3533 bajtówGeneruje tabelę wartości bibi-binarnych dla liczb całkowitych [0, 16), a następnie konwertuje dane wejściowe n na listę 16 podstawowych cyfr i wybiera odpowiednią nazwę bibi-binarną dla każdej cyfry szesnastkowej.
Zaoszczędzono 2 bajty dzięki @randomra.
Stosowanie
Ta część generuje tablicę 16 x 2 znaków dla bibi-binarnej nazwy każdej cyfry szesnastkowej.
Wyjaśnienie
źródło
'HBKDOAEI'{~[:(+0 4$~$)4#.inv]
Perl,
5251 bajtówObejmuje +1 dla
-p
Uruchom z numerem na STDIN
bibi.pl
:źródło
PHP, 63 bajtów
wkład @Titus Dziękujemy
72 bajty działa również na zero
76 bajtów alternatywna wersja
źródło
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;
za 63 bajty lub port odpowiedzi Arnaulda na 61:function f($n){return$n?f($n>>4).HBKD[$n/4&3].OAEI[$n&3]:'';}
H
pierwszym miejscu. Weź drugi.Rubinowy,
8583 bajtówTylko szybkie i proste rozwiązanie bez kodowania łańcucha.
źródło
Pyth, 21 bajtów
Program, który pobiera liczbę całkowitą ze STDIN i wypisuje wynik.
Wypróbuj online
Jak to działa
źródło
PHP, 93 bajty
Wykorzystuje to w zasadzie zintegrowane funkcje szesnastkowe i małą sztuczkę w instrukcji while, aby zaoszczędzić na nawiasach klamrowych.
źródło
Java, 224 bajty
Używanie pewnych sztuczek w tablicy odnośników Zastosowanie typu Long polegało na zmniejszeniu liczby bajtów w porównaniu do liczby całkowitej
źródło
CJam , 20 bajtów
Wypróbuj online! (Jako pakiet testowy oddzielony od linii).
Wyjaśnienie
źródło
Dyalog APL , 19 bajtów
Wymaga
⎕IO←0
ustawienia domyślnego w wielu systemach.∊
zaciągnąć się (zrobić całkowicie płaskie)(
...,
zniszczony'HBKD'∘.,'OAEI'
tabela konkatenacji (tzn. wszystkie kombinacje))[
indeksowane przez ...16⊥⍣¯1
odwrotność reprezentacji od podstawy-16 do podstawy 10 (tj. od podstawy-10 do podstawy 16)⊢
z⎕
wejście numeryczne]
Wypróbuj APL online!
źródło
Lua, 196 bajtów
Lua jest denerwująca dla tego rodzaju zadania, ponieważ domyślnie nie zawiera metody konwersji szesnastkowej lub binarnej. Większość ciała konwertuje go na bazę 4. Następnie, jeśli potrzebujemy, zmuszamy 0 za nim
s=("0"):rep(#s%2)
, a następnie używamy gsub zamieniając wszystkie gadżety na ich odpowiedniki BIBI.źródło
Chip , 174 bajty
Wypróbuj online! TIO zawiera opakowanie Bash, które konwertuje ciąg liczb całkowitych na rzeczywistą 32-bitową wartość całkowitą.
Górna połowa drukuje litery odpowiadające danym binarnym, gdy tylko dolna połowa wykryje, że osiągnęliśmy interesujące dane (innymi słowy, pomijamy zera na początku. Aby wydrukować wszystkie zera na początku, usuń drugą linię, która zaczyna się od
A
i w dół.źródło