Ваша задача проста. Разместите фрагмент кода на любом языке, который, если фрагмент повторяется n раз, будет выводить n в десятичном, восьмеричном и шестнадцатеричном виде в указанном порядке, разделенных пробелами. n является целым числом больше нуля. Здесь нет ведущих нулей. Кратчайший ответ выигрывает
пример
Если фрагмент кода, ABC
то контрольный пример
ABC
1 1 1
ABCABC
2 2 2
ABCABCABCABCABCABCABCABCABC
9 11 9
ABCABCABCABCABCABCABCABCABCABCABCABC
12 14 C
ABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABC
18 22 12
1 01 0x1
? (Включает префиксы)Ответы:
Japt, 12 байт
Спасибо @ETHproductions за сохранение 2 байта!
Так же, как мой 𝔼𝕊𝕄𝕚𝕟 ответ.
источник
[°TTs8 TsG]¸
Perl, 30 байт
Вернитесь к началу строки, счетчик приращений и счетчик печати перезаписывают старый вывод.
источник
JavaScript,
54 53 5147 байтСохранено 4 байта благодаря @ user81655
Я действительно удивлен, что это работает.
объяснение
Попробуйте онлайн
источник
ReferenceError: Can't find variable: d
даже в свободном режиме D:d=d?d+1:1
?C ++,
205179 байт(Нет завершающего символа новой строки - при копировании первая строка копии и последняя строка оригинала должны совпадать)
По сути, это работает путем создания последовательности статических переменных, которые при построении увеличивают счетчик глобальной переменной. Затем, при уничтожении, если счетчик не равен 0, он делает все свои выходные данные и устанавливает счетчик в ноль.
Чтобы определить последовательность переменных без конфликтов имен, мы используем макрос, объясненный следующим образом:
что в некоторой степени зависит от особенностей струнного процессора. Мы используем
z
много раз для определения классов / переменных, которые не будут конфликтовать друг с другом при копировании на отдельные строки. Более того, определения, которые должны встречаться только один раз, помещаются в первую строку, которая закомментирована в копиях кода.#define
and#include
не заботятся о том, что они повторяются, поэтому не требуют специальной обработки.Этот код также имеет неопределенное поведение в выражении:
так как нет точек последовательности, но с изменен и доступен. LLVM 6.0 выдает предупреждение, но компилирует его по желанию, которое
--c
оценивается раньшеc
. Можно было бы, за счет двух байтов, добавьте инструкцию--c;
перед выходами и изменения--c
вprintf
кc
, что бы избавиться от предупреждения.Заменено
std::cout
сprintf
экономией 26 байтами благодаря предложению моего брата.источник
CJam,
201918 байтСпасибо @ MartinBüttner за игру в 1 байт!
Попробуйте онлайн!
Как это работает
источник
𝔼𝕊𝕄𝕚𝕟, 14 символов / 28 байт
Try it here (Firefox only).
Первый ответ! Хотя, возможно, есть лучшие способы справиться с этим.
объяснение
источник
MATL , 26 байт
Использует текущий выпуск (6.0.0) . Работает на Октаве.
Примеры
Однажды:
Дважды:
16 раз:
объяснение
Количество элементов в стеке используется, чтобы указать, сколько раз мы запускали фрагмент
источник
OCaml, 198 байт
Включает завершающий символ новой строки и требует, чтобы имя файла начиналось с тильды (я использовал
~.ml
; вы можете запустить егоocaml \~.ml
), потому что это самый ценный стандартный печатный символ ASCII. Нарушает тот факт, что все символы в строке являются изменяемыми иSys.argv.(0).[0]
являются первым символом в имени файла.Это должно работать только для n = 1 - 126, потому что код ASCII для
~
- 126, и я добавляю один к выводу. Его можно сделать на два байта короче, если мы хотим, чтобы n = 1 до 125. После того, как это будет повторено 126 раз, он вернется к n = 1.Это мой первый гольф, поэтому любые комментарии или улучшения будут высоко оценены.
Безголовая версия:
источник
Sys.argv.(0).[0]
. Я не знаю много об OCaml, хотя.TeaScript ,
2120 байтЯ должен сделать это автоматически закрыть на
;
Попробуйте онлайн
объяснение
┼
становится++
источник
Perl, 40 байт
За толстой кишкой стоит последний перевод строки.
Рассматривает все после первой строки как документ здесь и считает
z
в нем. Для каждой последующей копии кодаz
добавляется один . Мы должны добавить1
к счету, потому что нет ни одного для первого фрагмента (тот, который выполняется).Если разрешен дополнительный вывод в stderr, мы можем опустить 2 одинарных кавычки
''
и сократить их до 38 байт. Без''
perl выдает предупреждение об устаревшей функции.источник
Mathematica, 76 байт
Обратите внимание, что
n
раньше не должно быть определений.Здесь поведение
;
. Выше приведен фрагмент кодаCompoundExpression
, однако, когда пара фрагментов собрана вместе, есть еще один,CompoundExpression
как показано ниже. (Некоторые ненужные перестановки сделаны.)Таким образом, нельзя сделать такой фрагмент работ, если запись написана явно
CompoundExpression
. Кроме того, почти все, что вам нравится, можно поставить перед первым,;
напримерE
,Pi
илиMandelbrotSetPlot[]
,.источник
bash, 49 байт
Файл
count.bash
:... нет новой строки.
Бег:
источник
Python 2, 54 байта
Нет завершающего перевода строки. Выходы в виде
1 01 0x1
.Если это не хорошо, 56 байт
При вставке друг перед другом длина файла увеличивается на 1 строку за каждый вставленный файл. Базовый случай начинается с 2 строк, поэтому вы должны вычесть 1 из длины строки. Вычисление подавляется комментарием.
источник
"%d %o %x"%(n,n,n)
Это довольно круто. Я понятия не имел, что ты можешь сделать это. Если окажется, что префиксы не подходят, мне придется их позаимствовать.Python 2.x 140 байт
Это было не слишком конкурентное решение, а метод, который я нашел забавным, с одной стороны, попытка многопоточного гольф-кода.
Сохраняет счетчик, порождает поток для каждого счетчика, и если счетчик не изменился, когда таймер счетчиков выключается после выполнения дорогостоящей математической задачи (вместо таймера для сохранения байтов), печатается отформатированная строка.
Некоторые примеры конфигураций и их выходы:
и пятнадцать копий паст:
источник
thread.start_new_thread
Мог ли питон подумать о худшем названии метода для игры в гольф?Perl 5 , 31 байт
Использует тот же подход, что и мой ответ: «Я удваиваю источник, вы удваивает вывод!» ,
Попробуйте онлайн!
источник
Рубин, 35 байт
Каждый фрагмент кода увеличивается
$.
(который начинается с 0, если файлы не были прочитаны), но выводит только последний.*-~-0
вычисляет до*1
, то есть печатает строку один раз, но с конкатенацией она становится*-~-01
восьмеричным выражением, равным 0. Так$><<
как не содержит завершающей строки, печать пустой строки означает ничего не печатать.источник