Это кодовый вызов для гольфа. Как написано в заголовке, напишите программу для преобразования строки символов ascii в двоичный файл.
Например:
"Hello World!"
должен превратиться в
1001000 1100101 1101100 1101100 1101111 100000 1010111 1101111 1110010 1101100 1100100 100001
.
Примечание: меня особенно интересует реализация pyth.
code-golf
string
binary
conversion
ericmarkmartin
источник
источник
Ответы:
CJam, 8 байт
Очень просто:
Попробуй здесь
источник
Python 3, 41 байт
Как и ответ KSFT , но я подумал, что, помимо
raw_input -> input
Python 3, здесь есть еще и преимущество, благодаря сплату дляprint
.источник
Pyth, 10 байт
Отображение и объяснение Python:
Ввод - это строка, которую нужно преобразовать без кавычек.
Попробуй здесь
источник
Psum(d).append(Pfilter(lambda T:gte(head(join(Plen(k),Plen())))))
, где d = '' и k = ''. Так что нет, это не действительно вообще.Python 3 - 43 байта
Не совсем короткий, но интересный подход ИМО. Это имеет дополнительное преимущество, заключающееся в том, что если количество значащих битов меняется, то EG
Hi!
, заполнение нулями тривиально (еще 2 байта, в отличие от 9 для.zfill(8)
):источник
Python - 52
Я буду работать над переводом этого на Pyth.Кто-то уже сделал ответ Pyth.Если вам не нужна полная программа или формат ввода-вывода и вы используете Python 3, вы можете сделать это в 23 байтах следующим образом:
x
это вход.Я знаю, что это не считается, потому что переводчик не был выпущен до того, как был объявлен вызов, но вот он в KSFTgolf:
источник
Рубин,
342824 байтаПринимает ввод через STDIN. Спасибо за 6 байтов, спасибо за AShelly и еще 4 благодаря britishtea.
источник
$<.each_byte{|c|$><<"%b "%c}
String#bytes
вместоString#each_byte
. Форма блока устарела, но он все еще работает :)PowerShell,
635946 байт-13 байт благодаря @mazzy
Попробуйте онлайн!
источник
Matlab
Это анонимная функция
использование есть
f('Hello World')
.В качестве альтернативы, если
x
определяется как строкаHello World!
в рабочей области, то простоdec2bin(char(x))
будет работать.источник
char
? Я думаю, что вы имеете в видуdec2bin(x)-'0'
char(x)
когдаx
строка уже ничего не делает. Таким образом, вы можете удалить его, чтобы сэкономить место. С другой стороны, результатомdec2bin
является строка, и я думаю, что выходные данные должны быть числамиJ - 9
Не знаю, как сделать это подряд без удвоения длины кода, мне нужно, чтобы гуру J сказали мне :)
источник
".
в начало. Он оценивает ваш результат, поэтому он будет в одну строку и разделен пробелами. Еще короче создать base10 номера с BASE2 цифрами:10#.#:3&u:
.Java - 148 байт
Отредактировано, чтобы включить полный файл
источник
for(char c:a[0].toCharArray()){
или дажеfor(byte b:a[0].getBytes()){
потому, что ввод ascii, если предположить, что язык машины не-utf-16public
и сократить имя программы до одного символа, чтобы выиграть больше байтов. Плюс,(String[]a)
отлично принимается компилятором, зарабатывая вам еще один байт.JavaScript ES6, 63
65байтЭто довольно долго, благодаря длинным именам функций JavaScript. Приведенный ниже фрагмент кода является грубым эквивалентом ES5, поэтому его можно запустить в любом браузере. Спасибо edc65 за улучшения игры в гольф.
источник
[for of]
немного короче, чем[...].map
перечислять символы в строках:alert([for(c of prompt())c.charCodeAt().toString(2)].join(' '))
.join(' ')
на.join` `
. Вы можетеprompt
alert
Scala -
59- 55 байтОбычно следует использовать foreach, а не карту.
источник
Машинный код 8088, IBM PC DOS,
3331 байт *Листинг:
Заполните исполняемый COM-файл для ПК DOS, ввод осуществляется через командную строку.
С ведущими нулями:
Загрузите и протестируйте ASCBIN.COM .
Или 39 байтов без начальных нулей:
Загрузите и протестируйте ASCBIN2.COM .
* Поскольку мне было не совсем ясно, разрешены ли ведущие нули, я публикую версии в обоих направлениях.
источник
MITS Altair 8800 , 0 байтов
Входная строка находится по адресу памяти
#0000H
( разрешено ). Вывод в двоичном виде через индикаторы ввода / вывода на передней панелиD7-D0
.Пример, сделать
RESET
, затем,EXAMINE
чтобы увидеть первый байт, а затем повторить,EXAMINE NEXT
чтобы увидеть остальные."H" = 01 001 000:
"e" = 01 100 101:
"l" = 01 101 100:
Попробуйте онлайн!
Без конкуренции, конечно. :)
источник
Хаскелл, 65
интенсивное использование списка монады. это не могло быть преобразовано в списки, потому что последние утверждения не были
return
.источник
C ++ - 119 байт
Освобождение памяти? Что это?
(MSVC компилирует код с предупреждением)
источник
main(int c,char**v){char x[9];for(;c=*(v[1]++);printf("%s ",itoa(c,x,2)));}
Желе , 3 байта
Попробуйте онлайн!
источник
Tcl , 52 байта
Попробуйте онлайн!
источник
binary scan [join $argv] B* b;puts [regsub -all .{8} $b {& }]
APL (Дьялог) , 12 байт
Попробуйте онлайн!
Спасибо Adám за помощь с этим решением.
источник
Python 3.6 , 39 байт
Попробуйте онлайн!
источник
Commodore VIC-20 / C64 / 128 и TheC64Mini, 101 токенизированный бейсик байтов
Вот запутанный список с использованием сокращений ключевых слов Commodore BASIC:
Здесь в целях пояснения приведен незапутанный символический листинг:
Функция,
fn b
объявленная в нулевой строке, принимает числовой параметр,x
которыйAND
редактируется со значениемb
; SGN затем используется для преобразованияx and b
в1
или0
.Первая строка принимает строковый ввод в переменную
a$
, и цикл начинается (обозначаетсяi
) до длины этого ввода.b
представляет каждый бит от 6-го до 0-го бита.c$
занимает каждый символ строки в позицииi
.строка 5 запускает цикл для проверки каждой битовой позиции;
right$
используется в строке 6 для устранения проблемы автоформатирования, когда Commodore BASIC отображает число, преобразуя выходные данныеfn b
в строку;asc(c$)
преобразует текущий символ в его код ascii как десятичное значение.Строка 7 представляет следующее битовое значение. Цикл
j
заканчивается перед печатью пробела, затем последний циклi
заканчивается.источник
JavaScript ES6, 71 байт
источник
.split('')
разбить пустую строку;.split()
превращается"abc"
в["abc"]
.Forth (gforth) , 45 байтов
Попробуйте онлайн!
Код Объяснение
источник
Рубин, 24 байта
Я надеялся победить Мартина Эндера , но мне удалось только связать его.
Принимает участие в STDIN; +1 байт за
-p
флаг.Попробуйте онлайн!
источник
Gaia , 4 байта
Очень доволен этим
Как это устроено
Попробуйте онлайн!
источник
Python 3 , 39 байт
Попробуйте онлайн!
Небольшое улучшение по сравнению с текущим ведущим ответом Python
источник
СТАТА 158
Я использовал другой подход, чем большинство. Прочитайте с помощью подсказки display _request () (сокращено до di _r (r)). Запишите строку в файл с именем b в текстовом режиме. Откройте b в двоичном режиме и прочитайте каждый символ как байт и преобразуйте в двоичный. Технически файл b должен быть закрыт в конце, но это допустимая программа, которая успешно работает без нее.
источник
Голанг - 68
Я новичок в Go, и я не уверен в правилах подсчета символов на этом языке здесь.
Импорт (11 байт):
Функция (55 байт):
Вы можете запустить его здесь .
источник
Никогда C # не выиграет такие вопросы, но вот попытка, полностью без кодирования. :)
C # - 84
источник
x=>String.Join(" ",x.Select(y=>Convert.ToString(y,2)));
однако учтите, что из-за использования.Select()
и этого более короткого ответа, и вашего исходного ответа необходимо включать 18 байт,using System.Linq;
если только вы не укажете, что он использует интерактивный компилятор Visual C # , который импортирует System.Linq по умолчаниюКобра - 64
Как лямбда:
источник