Code Golf Measurer © 2019
Используемые Hexdumps xxd
выглядят примерно так:
00000000: 666f 6f20 6261 7220 7370 616d 2065 6767 foo bar spam egg
00000010: 730a s.
Ваша задача - преобразовать hexdump в этой форме в число используемых байтов.
Правила:
- Обычные лазейки запрещены.
- Это код-гольф , поэтому выигрывает кратчайший действительный ответ в байтах.
- Вы можете включать или не включать новую строку в конце текста (
0a
). Это означает, что если hexdump оканчивается символом новой строки (0a
), то на этом входе его вывод может быть уменьшен на единицу. - Пустой ввод (буквально ничего: пустой список / строка / и т. Д.) Должен выводить 0.
- Ввод можно принимать в любой форме
- Ввод будет действительным ASCII без управляющих символов
- Входные данные должны содержать весь hexdump
Тестовые случаи:
00000000: 4865 6c6c 6f2c 2077 6f72 6c64 2120 4865 Hello, world! He
00000010: 6c6c 6f2c 2077 6f72 6c64 210a llo, world!.
возвращает 28 или 27
00000000: 0a .
возвращает 1 или 0
00000000: 6368 616c 6c65 6e67 650a challenge.
возвращает 10 или 9
00000000: 4865 6c6c 6f2c 2077 6f72 6c64 21 Hello, world!
возвращает 13
возвращает 0 (это буквально ничто: пустой список / строка / и т. д.)
Пояснения были бы хороши для нестандартных языков.
code-golf
string
hexadecimal
gadzooks02
источник
источник
xxd
подается пустая строка, он ничего не выводит.objdump
разборки илиnasm
списки для ответов машинного кода.) Я думаю, я должен опубликовать это в песочнице ...Ответы:
Сетчатка 0.8.2 , 8 байт
Попробуйте онлайн! Объяснение:
Удалите первые 51 символ каждой строки. (Строки могут содержать от 52 до 67 символов, поэтому они всегда совпадают по одной строке.)
Подсчитайте оставшиеся символы не новой строки.
7 байтов, если пустой ввод не должен поддерживаться:
Попробуйте онлайн! Объяснение:
Удалите первые 52 символа каждой строки. (Строки могут содержать от 52 до 67 символов, поэтому они всегда совпадают по одной строке.)
Количество на 1 больше, чем количество оставшихся символов (включая переводы строки).
источник
&`.{52}
.tcsh , 12 байт
Попробуйте онлайн!
источник
V (vim) , 7 байтов
Попробуйте онлайн!
Объяснение:
HexDump:
источник
Сетчатка , 7 байт
Это подсчитывает общее количество однострочных строк длиной 52. Возможно, можно сделать что-то похожее
%52,`.
, но я не смог найти способ это исправить.Попробуйте онлайн!
источник
&`.{52}
для Retina 0.8.2.APL (Dyalog Extended) , 18 байт
Полная программа. Запрашивает список строк (то есть списков символов).
Попробуйте онлайн!
⎕
незамедлительный49↑¨
взять первые 49 символов от каждого(
…)¨
Применить следующую молчаливую функцию к каждому:⊢
Аргумент⊆
разделить на ряды персонажей, которые≠
отличается от символа заполнения (пробел)1↓
брось первое слово∊
ε NLIST (Flatten)≢
число2÷⍨
разделить на дваисточник
Желе , 5 байт
Монадическая ссылка, принимающая список строк, которые дают целое число байтов.
Попробуйте онлайн!
Как?
источник
C (gcc) ,
6455 байтПопробуйте онлайн!
9 байтов сброшено благодаря YSC!
Вот более хрупкая версия, вдохновленная JavaScript-решением Арно, которое, вероятно, не подходит для длинных входов:
C (gcc) , 50 байтов
Попробуйте онлайн!
источник
return r
наl=r
main
), ее можно вызывать несколько раз.r;s[];f(l){while(*s=0,gets(s),l=strlen(s))r+=l-51;l=r;}
: 55 байтов :)while()
имеет то же количество байтов, что иfor(;;)
. Таким образом,;while()
на один байт длиннееfor(;;)
.Python 3,
4846 байтВвод передается в виде строки в функцию. Функция увеличивает длину ввода (включая новые строки), затем вычитает 52 для каждой строки.
Попробуйте онлайн
источник
f=
можно переместить в заголовок как `f =`, оставив только лямбда-код в виде кода и сохранив два байта: попробуйте это онлайн!f=
привычка, которую я подхватил с сервера разногласий Python.Japt
-x
, 5 байтВвод в виде массива строк.
Попытайся
источник
Perl 6 , 18 байт
Попробуйте онлайн!
Аноним Любая лямбда, которая берет список строк и возвращает сумму количества символов, вычитая 51 для каждой строки
источник
05AB1E ,
86 байтПопробуйте онлайн!
Ввод в виде списка строк.
источник
Язык формул IBM / Lotus Notes, 53 байта
Там нет TIO для Формулы, поэтому вот скриншоты тестовых случаев:
Формула находится в вычисляемом поле, которое предоставляет значение после «Returns».
объяснение
Это хорошая демонстрация того, как Формула будет рекурсивно применять функцию к списку без необходимости цикла. Формула находится в вычисляемом поле в той же форме, что и редактируемое поле ввода `i '.
@Left
и@Right
разрешить использование разделителя строк или количества символов. Поэтому мы ищем справа от:
и затем слева от первого вхождения двух пробелов. Так как Формула видит новую строку как разделитель списка, она будет применять ее к каждой строке ввода.@Explode
является формулой эквивалентаsplit
функции и по умолчанию пробел,,
или;
. Опять же, он применяется к каждой строке в поле, но на этот раз результаты объединяются в один список.@Length
будет применяться к каждому члену списка. В каждом случае мы делим его возвращаемое значение на 2.@Sum
весь список и вывести результат.источник
JavaScript (ES6), 34 байта
Попробуйте онлайн!
комментарии
источник
Красный ,
8155 байтПопробуйте онлайн!
Принимает входные данные в виде списка строк.
источник
JavaScript,
3332 байтаПопробуйте онлайн!
Сохранено 1 байт благодаря Арно.
источник
Befunge-98 (FBBI) , 16 байт
Попробуйте онлайн!
источник
Stax , 5 байт
Запустите и отладьте его
источник
Zsh , 36 байт
С флагами zsh по умолчанию:
Попробуйте онлайн!
${(f)1}
разбивает$1
на новые строки и отбрасывает пустые строки. В$[ arithmetic expansion ]
защищает от пустого случая, когда цикл никогда не заходит$c
.Зш , 28 байт
С
-o extendedglob
:Попробуйте онлайн!
(f)
Разделение на новые строки,${ #?(#c52)}
удаление(F)
первых 52 символов, объединение на новых строках, так что счет идет по символам, а не по спискам,${# }
подсчитывает символы.источник
asm2bf , 135 байт
Гольф версия:
Комментируемая версия:
источник