Когда я путешествовал в будущем, я заметил забавную игру среди детей около 2275 года. Когда они не хотят, чтобы их пра-пра-пра-пра-пра- прародители поняли, о чем они говорят, они используют речь BIBABOBU . Очевидно, я ничего не мог понять ни с моим мозгом до киборгской эры, и я чувствовал (или технически: я буду чувствовать ) действительно глупым. Итак, мне понадобится декодер для моего следующего визита.
BIBABOBU?
Несмотря на то, что это долгое время считалось устаревшим, ASCII все еще широко используется в поп-культуре 2275 года, и этот язык основан на нем.
Таким образом, строка кодируется в BIBABOBU:
- Преобразуйте все символы в их коды ASCII.
Возьмите двухзначное шестнадцатеричное представление каждого кода и преобразуйте их, используя следующую таблицу:
0: BI 4: BIDI 8: BADI C: BODI 1: BA 5: BIDA 9: BADA D: BODA 2: BO 6: BIDO A: BADO E: BODO 3: BU 7: BIDU B: BADU F: BODU
пример
"Hello!" → 48 65 6C 6C 6F 21 → "BIDIBADI BIDOBIDA BIDOBODI BIDOBODI BIDOBODU BOBA"
Тем не менее, соответствующий ввод будет дан без какого-либо пространства для имитации монотонной интонации, которую используют дети, чтобы сделать это еще труднее для понимания без имплантатов:
"BIDIBADIBIDOBIDABIDOBODIBIDOBODIBIDOBODUBOBA"
Разъяснения и правила
- Помните, что мне нужен декодер , а не кодер.
- Декодированные символы гарантированно находятся в диапазоне [32 ... 126] .
- Входные данные гарантированно содержат четное число шестнадцатеричных цифр в кодировке BIBABOBU.
- Вы можете использовать ввод либо в нижнем, либо в верхнем регистре. Смешанные случаи не допускаются.
- Поскольку во время путешествий во времени довольно часты перевороты, это код-гольф , чтобы минимизировать риски.
Контрольные примеры
Примечание: перевод строки используется ниже только для форматирования. Вы не должны обращаться с ними.
Input:
BIDABIDIBIDOBIDABIDUBUBIDUBIDI
Output:
Test
Input:
BIDABIDUBIDOBIDABIDOBODIBIDOBUBIDOBODUBIDOBODABIDOBIDABOBIBIDUBIDIBIDOBODUBOBIBUBOBUBOBUBI
DUBUBIDABOBA
Output:
Welcome to 2275!
Input:
BIDIBADIBIDOBIDABIDOBODIBIDOBODIBIDOBODUBOBODIBOBIBIDABIDIBIDOBADABIDOBODABIDOBIDABOBIBIDA
BIDIBIDUBOBIDOBABIDUBIDOBIDOBIDABIDOBODIBIDOBIDABIDUBOBOBABOBIBIDABADABIDOBODUBIDUBIDABOBI
BIDOBODIBIDOBODUBIDOBODUBIDOBADUBOBIBIDUBUBIDOBODUBOBIBIDOBIDOBIDUBIDABIDOBODOBIDOBODOBIDU
BADABOBA
Output:
Hello, Time Traveler! You look so funny!
Input:
BIDIBABIDOBODOBIDOBIDIBOBIBIDUBADABIDOBODUBIDUBIDABOBIBIDOBIDIBIDOBODUBIDOBODOBOBIDUBIDUBI
DIBOBIBIDUBIDABIDOBODOBIDOBIDIBIDOBIDABIDUBOBIDUBUBIDUBIDIBIDOBABIDOBODOBIDOBIDIBOBIBIDUBI
DUBIDOBADIBIDOBABIDUBIDIBOBIBIDIBADABOBIDUBIDOBODABOBIBIDUBUBIDOBABIDUBADABIDOBADABIDOBODO
BIDOBIDUBOBODIBOBIBIDOBIDIBIDOBODUBOBIBIDUBADABIDOBODUBIDUBIDABUBODUBOBIBIDIBADIBIDOBABOBI
BIDOBADIBIDOBABOBIBIDOBADIBIDOBABOBA
Output:
And you don't understand what I'm saying, do you? Ha ha ha!
источник
Ответы:
05AB1E ,
363533 байтаСохранено 1 байт благодаря Mr.Xcoder
Сохранено 2 байта благодаря KevinCruijssen
Попробуйте онлайн! или как тестовый набор
объяснение
источник
'B©¡¦®ì®D…IAO©â'D«‚˜®'U«âJskh2ôJHçJ
работает на 35 байтов.©
. Спасибо :)'B
кć
и удалению¦
, так как вход всегда будет начинаться с «B».ć
. Спасибо!Желе ,
26242322201715 байтПопробуйте онлайн!
Как это устроено
источник
Perl 6 , 58 байт
Попробуйте онлайн!
Сильно вдохновлен решением от Dennis 'Jelly. Использует другую магическую функцию,
x³ % 87 % 4
которая также отображает коды ASCIIIAOUBD
в012302
.Альтернативная версия
7574 байта-1 байт благодаря Джо Кингу
Попробуйте онлайн!
Альтернативная 85-байтовая версия
Попробуйте онлайн!
источник
(^16)>>.base(16)
-1 байтPython 2 ,
100979695 байт-1 байт благодаря овсу
-1 байт благодаря ГБ
Попробуйте онлайн!
источник
Perl 5 -p, 67 байт
Попробуйте онлайн!
источник
05AB1E (legacy),
68656059 байтВвод в нижнем регистре.
-3 байта неявно благодаря изменению @Emigna
'b¡εg>}s£
на'b©¡®ì
.Попробуйте онлайн или проверьте все контрольные примеры .
Кроме того, определенно можно играть в гольф с чем-то умнее, чем огромные сжатые струны. Сделаю еще один взгляд позже.Более короткий ответ уже предоставлен @Emigna , поэтому обязательно проголосуйте за него!Объяснение:
источник
Perl 6 ,
88 8684 байтаПопробуйте онлайн!
источник
R ,
141135 байтПопробуйте онлайн!
Спасибо JayCe за сохранение 6 байтов!
Использование некоторой модульной магии, вероятно, будет короче, но я очень доволен этим как наивный первый проход.
источник
%*%
я вижу. :-) Вы также можете указать`:`
в качестве аргумента функции, если вы хотите использовать это в тандеме с чем-то другим!Japt,
432928 байтНеудивительно, что решение от Dennis 'Jelly работает намного короче.
Выводит массив символов.
Попробуй
Оригинал, 42 байта
Попробуй
объяснение
источник
C (gcc) ,
181138136 байтНадеюсь, в будущем появится компилятор C, который скомпилирует это! :-)
Спасибо Максу Ехлакову иачка за предложения.
Попробуйте онлайн!
В случае, если будущий компилятор C понимает только ASCII с BIBABOBU-ified :-)
(Кодер Попробуй онлайн! )
источник
c=printf(&v),v=0
вместоv=!putchar(v),c=1
JavaScript (Node.js) ,
131128 байтПопробуйте онлайн! Ссылка включает в себя тестовые случаи. Альтернативная версия, также 131 байт:
Попробуйте онлайн! Ссылка включает в себя тестовые случаи. Редактировать: Сохраняет 3 байта благодаря @Shaggy.
источник
unescape()
это хорошая идея.indexOf
->search
чтобы сохранить байт.r
.Bash + обычные утилиты Linux, 75 байт
Попробуйте онлайн!
источник
Scala , 305 байт
Ну, я уверен, что это можно сыграть в гольф. Но все же, оно существует. Вводит строчные буквы.
f
выводит результат в стандартный вывод.РЕДАКТИРОВАТЬ: -8 символов благодаря тому, что я больше не тупой (пробелы); -13 символов благодаря crater2150
Попробуйте онлайн!
источник
dropRight(1)
наinit
,Seq("").drop(1)
сSeq[String]()
, иmap(b=>a+b)
сmap(a+_)
map(a+_)
работать, но я знал, что смогу это сделать. спасибо за другие советы!Python 2 ,
142139127118 байтПопробуйте онлайн!
источник
Python 2 , 93 байта
Попробуйте онлайн!
источник
Рубин ,
8675 байтПопробуйте онлайн!
источник
Dyalog APL,
7472 байтаРешение для начинающих в Dyalog APL (только что начал изучать это пару дней назад!). Определяет dfn, который принимает один правильный аргумент (вход). 72 символа, 72 байта при использовании кодировки Dyalog. Основано на решении Emigna в 05AB1E.
источник
Желе , 39 байт
Попробуйте онлайн!
Используемая техника очень похожа на технику Эмигны . Надеюсь, я скоро буду играть в гольф дальше.
источник
Brain-Flak , 178 байт
Попробуйте онлайн!
объяснение
источник
05AB1E , 30 байтов
Порт безумного Jelly ответа @Dennis (только с менее удобными встроенными функциями). Так что обязательно проголосуйте за него!
Попробуйте онлайн или проверьте все контрольные примеры .
Объяснение:
источник
Java (JDK 10) , 199 байт
Попробуйте онлайн!
кредиты
источник
-~d
вместо(d+1)
?char
s вместо этого, и когда я вернулся к своей первой версии, я полностью забыл это снова. ;)VBA (Excel), с удивительными
322244 байтамиДа, и я люблю шестнадцатеричное. (Там пока нет шрифта сарказма, поэтому я сейчас использую курсив)
Я буду добавлять комментарии, если кто-то захочет, но я думаю, что это само за себя.Гольф случился.С комментариями:
Я действительно пытался вставить это в VB Immediate Window, но оно, похоже, не сработало ... это сократило бы 11 символов, я думаю. Я также хотел поместить оператор Match в скобки, но это каждый раз вызывает ошибку без вывода сообщений. Помощь приветствуется: D
источник
Array("I","A","O","U","II","IA","IO","IU","AI","AA","AO","AU","IO","OA","OO","OU")
->Split("I A O U II IA IO IU AI AA AO AU IO OA OO OU")
иNot IsError(c)
->IsError(c)=0
Haxe , 228 байт
Не самое лучшее, стандартные имена библиотечных функций слишком велики :(
Попробуйте онлайн!
источник
Pyth, 35 байтов
Выходы в виде списка символов.
Попробуй здесь
объяснение
источник
Древесный уголь , 36 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Зацикливайтесь на каждом вводимом символе и переключайтесь.
Если это,
B
то нажмите0
на предварительно определенный пустой список.Если это,
D
тогда вытолкните последнее значение, увеличьте его, умножьте на4
и снова нажмите.В противном случае найдите индекс в строке
AOU
, увеличьте его и добавьте к последнему значению.Разбейте список на пары значений, декодируйте как основание 16, преобразуйте в ASCII и неявно напечатайте.
источник
Чисто ,
145134 байтаПопробуйте онлайн!
Разъяснение:
источник
PHP, 119 байт
предполагает ввод заглавных букв. Запустите как трубу с
-nR
или попробуйте онлайн .требует PHP 7.1
для более старого PHP, используйте
substr($m,-3,1)
иsubstr($m,-1)
вместо$m[-<x>]
(+16 байт);для младшего PHP, положить
B
,XIAO
иIAOU
в кавычках , чтобы избежать предупреждений (+10 байт).источник
05AB1E , 40 байт
Попробуйте онлайн!
источник
PHP, 163 байта
Вызовите
f(string $s)
с соответствующей строкой символов, закодированных в bibabobu, и она напечатает декодированную строку.источник
Python 3, 199 байт
Не самый короткий, но без петель.
источник