Для заданной входной строки, содержащей только буквы и цифры, напишите программу или функцию, которая печатает возможные печатаемые символы ASCII (Hex 20-7E), которые соответствуют значению строки в базах 8, 10 и 16 (где это возможно). Символы должны быть написаны в порядке возрастания с точки зрения основ, которым они соответствуют (сначала база 8 и т. Д.). Выходные данные могут быть в формате массива (например [& . F]
) или разделены пробелами или символами новой строки (конечный символ новой строки необязателен), как примеры.
Если нет возможного печатного символа ASCII, который может быть сформирован, программа не должна иметь никакого вывода.
образцы
31
==> 1
47
==> ' / G
69
==> E i
7A
==> z
100
==> @ d
156
==> n
189
==> <empty>
potaTO
==> <empty>
5G
==> <empty>
19
==> <empty>
Это код-гольф , поэтому выигрывает ответ с наименьшим количеством байтов. Стандартные правила применяются.
источник
map
иfilter
, массивы действительно полезны.'0'+b+...
когдаb
всегда будет строка?0+b+...
MATL , 23
2428байт1 байт благодаря @David
Попробуйте онлайн!
источник
D
это необходимо, не так ли? Хорошая работа по созданию вектора, я сделал почти так же, как вы, но не смог сократить вектор с[8,10,16]
.D
в этом случае необходимо очистить стек. Но ты прав, это не так! Благодаря!' ':'~'
в качестве предопределенного литерала для следующего выпуска!32:126m
это хорошая идея!Python 3,
8482 байтаисточник
Pyth,
23212018 байтВывод в виде массива. Между
\x80
обратной косой чертой и буквой C есть буква, которую я заменил на•
.Попробуй это здесь .
источник
Джольф, 26 байт
Попробуй это здесь! Тестирование
объяснение
источник
Bash + утилиты GNU + ascii , 36
Не уверен,
ascii
разрешено ли использование утилиты. Ввод принимается в качестве параметра командной строки.ascii
может быть установлен на Ubuntu сsudo apt-get install ascii
.источник
Javascript ES6, 89 символов
Тест:
источник
Луа, 147 байт
Я не думаю, что смогу сыграть в эту игру намного больше, я протестировал множество способов сделать это, и вот самый короткий. Даже использование старого компилятора, который содержит устаревшую функцию
table.foreach(table,function)
, не сбрасывает некоторые байты.Эта программа принимает строку в качестве аргумента и печатает конкатенацию табличных значений, разделенных пробелами.
Неуправляемый и объяснения
Если вы хотите узнать, почему есть набор переменных, но он не используется в коде для гольфа (переменная
_
в цикле for), вот почему:У вас есть 2 способа перебора массива в Lua, либо в стиле for:
или в стиле foreach:
Мне нужны были значения, содержащиеся в таблице, так
{8,10,16}
как они являются различными базами, которые я должен перебирать. Но функции с множественным возвратом не позволят вам выбрать, какой из них вы на самом деле хотите вернуть, они следуют порядку. Чтобы установить переменнуюvalue
, мне нужно поймать и значениеkey
: это то, что мы называем фиктивной_
.источник
С (функция), 76
Ideone.
источник
j*=j,j/=6
более ясно написано какj=j*j/6
j*=j/6
но это не сработало из-за потери точности при целочисленном деленииj<20,
оператор запятой отбрасывает весь эффект этого.JavaScript ES6,
8988 байтСохранено 1 байт благодаря Нейлу!
Возвращает массив. Если это не хорошо, это работает на дополнительные 8 байтов, показывая возможные совпадения.
Показать фрагмент кода
источник
47
.Number()
требует0o
ноeval
доволен всего0
. Извините за путаницу.R, 84 байта
Используется
strtoi
для преобразования в каждую из баз, а затем для преобразования в символ, если находится в соответствующем диапазоне. Можно было бы сохранить еще 4 байта, удалив,cat
если бы мы разрешили печать символов по умолчанию (завернутые""
)источник