Биби-двоичный код представляет собой числовую систему, изобретенную Боби Лапойнтом для обозначения чисел буквами, произношение которых кажется забавным.
Ваша задача - преобразовать десятичные числа в двоичные числа Биби!
преобразование
Число преобразуется в основание 16 (шестнадцатеричное), и каждый символ заменяется его биби-двоичным именем:
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
Позвольте N
быть положительным целым числом (между 1 -> 2 ^ 31-1). Для каждого символа в шестнадцатеричном представлении N
замените символ его соответствующей парой биби-двоичных кодов (таблица выше содержит все пары).
пример
N
= 156H
= (шестнадцатеричное представлениеN
) -> 9C- 9 -> KA, C -> DO
Таким образом, на выходе получается КАДО.
Ввод, вывод
Вы получите положительное 32-разрядное целое число N
, которое вам нужно будет преобразовать в двоично-двоичный код.
Вы можете (вернуть, распечатать и т. Д.) В любом удобном формате, но пары должны быть связаны ! Так KA DO
что не будет в порядке, но KADO
будет.
И, в нижнем регистре и верхний регистр разрешены.
правила
- Нет лазеек.
- Это код-гольф, поэтому выигрывает самый короткий код.
Testcases
2048 -> KOHOHO
156 -> KADO
10000 -> HEBIHAHO
12 -> DO
Ответы:
05AB1E ,
201816 байтобъяснение
Попробуйте онлайн!
Сохранено 2 байта благодаря Аднану
источник
…Âkd
это сжатая версия"hbkd"
:).H
также преобразует шестнадцатеричное число в основание 10.Python 2, 58 байт
Рекурсивное решение. Попробуйте это на Ideone .
источник
f=lambda n:n*'_'and f(n/16)+"HBKD"[n/4%4]+"OAEI"[n%4]
экономит 5 байтов.Python 2,
8176 байтВыбирает цифру bibi для представления каждой шестнадцатеричной цифры на основе шаблонов в цифрах bibi.
источник
Javascript (ES6),
585343 байтаСохранено 10 байт (больше не поддерживается n = 0)
демонстрация
источник
Pyth, 28 байт
Определяет функцию
y
. В основном тот же алгоритм, что и мой ответ Python .Объяснение:
Попробуй это здесь! (Дополнительные два символа в конце просто для вызова функции)
источник
Желе , 17 байт
Попробуйте онлайн! или проверьте все контрольные примеры .
Как это работает
источник
Рубин,
5551 байтРекурсивная анонимная функция:
Назовите это, например, с помощью
f[156]
и он возвращает"KADO"
источник
J,
3533 байтаСоздает таблицу двоичных значений для целых чисел [0, 16), а затем преобразует входные данные n в список из 16 основных цифр и выбирает соответствующее двоичное имя для каждой шестнадцатеричной цифры.
Сохранено 2 байта благодаря @randomra.
использование
Эта часть генерирует массив символов 16 x 2 для двоичного имени каждой шестнадцатеричной цифры.
объяснение
источник
'HBKDOAEI'{~[:(+0 4$~$)4#.inv]
Perl
5251 байтВключает +1 для
-p
Запустить с номером на STDIN
bibi.pl
:источник
PHP, 63 байта
Вклад @Titus Спасибо
72 байта работает также с нуля
76 байтов альтернативная версия
источник
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;
а также 63 байта или порт ответа Арно для 61:function f($n){return$n?f($n>>4).HBKD[$n/4&3].OAEI[$n&3]:'';}
H
в первую очередь. Возьми второй.Рубин,
8583 байтаПросто быстрое и простое решение без кодирования строки.
источник
Pyth, 21 байт
Программа, которая принимает ввод целого числа из STDIN и печатает результат.
Попробуйте онлайн
Как это работает
источник
PHP, 93 байта
Это в основном использует интегрированные шестнадцатеричные функции и небольшую хитрость в операторе while для экономии на фигурных скобках.
источник
Java, 224 байта
Использование некоторой хитрости таблицы поиска Использование типа Long должно было сократить количество байт по сравнению с Integer.
источник
CJam , 20 байтов
Попробуйте онлайн!(Как набор тестов с разделением строк).
объяснение
источник
Дьялог АПЛ , 19 байт
Требуется
⎕IO←0
по умолчанию во многих системах.∊
подключить (сделать полностью плоским)(
...,
буйный'HBKD'∘.,'OAEI'
таблица объединения (то есть все комбинации))[
проиндексировано ...16⊥⍣¯1
обратное представление от base-16 до base 10 (то есть от base-10 до base 16)⊢
из⎕
числовой ввод]
Попробуй APL онлайн!
источник
Луа, 196 байт
Lua раздражает задачу такого рода, так как по умолчанию она не содержит шестнадцатеричный или двоичный метод преобразования. Большая часть плоти преобразует ее в базу 4. После этого мы устанавливаем 0 за ней, если нам нужно использовать
s=("0"):rep(#s%2)
, тогда мы с помощью gsub заменяем все объекты на их аналог BIBI.источник
Чип , 174 байта
Попробуйте онлайн!TIO включает в себя оболочку Bash, которая преобразует целочисленную строку в фактическое 32-разрядное целочисленное значение.
Верхняя половина печатает буквы, соответствующие двоичным данным, как только нижняя половина обнаружит, что мы достигли интересных данных (другими словами, мы пропускаем начальные нули. Чтобы напечатать все начальные нули, удалите вторую строку, которая начинается с
A
и вниз.источник