Вызов
Ваша задача - написать фрагмент кода, который выводит другой фрагмент кода. Этот код должен в свою очередь выводить еще один код, пока окончательный код не выведет целое число 1 . Цепочка заканчивается при первом выводе 1 .
Ни одна из ваших программ не может использовать какие-либо символы (есть одно исключение в разделе правил).
Победившим представлением будет представление с самой длинной цепочкой. Тай-брейк будет иметь самую короткую общую длину кода.
Правила:
- Вы можете использовать как функции, программы и фрагменты. Вы можете предполагать среду REPL.
- Все функции должны быть написаны на одном языке
- Символо-независимые языки запрещены. Это включает частично независимые от символов языки, такие как Headsecks.
- Форматирование вывода по умолчанию может быть проигнорировано при выводе функции. Это включает в себя новые строки и
ans =
т. Д. - Вы можете использовать пробел (код ASCII 32), но обратите внимание на следующее:
- Вы можете использовать столько пробелов, сколько вам нужно в одной из функций, но не более 5 во всех других функциях.
- Вы не можете повторно использовать любые символы, если кодовая точка 32 не является пробелом в вашем языке.
Ни одна из программ не может принять вход
Цепочка должна быть длиной не менее двух программ.
Пример:
Ваш первоначальный код abc+cab+bac
. Это выводит:, foofoo*123
который в свою очередь выводит disp(~0)
, который выводит 1
. Это цепочка из 3 программ общей длиной 29 (прерыватель связи).
code-challenge
code-generation
Стьюи Гриффин
источник
источник
2^3
, которая будет просто оценивать1
, или она должна быть, напримерlambda:2^3
,print(2^3)
и т. Д.?1
быть и программой, и результатом этой программы, или цепочка заканчивается, когда1
результат?Ответы:
05AB1E , 5 цепочек: 236 + 29 + 13 + 3 + 1 = 282 байта
Попробуйте онлайн!
которая печатает программу
Попробуйте онлайн!
которая печатает программу
Попробуйте онлайн!
которая печатает программу
Попробуйте онлайн!
которая печатает программу
Попробуйте онлайн!
какие отпечатки
1
источник
8784>žxB
и я наверное KO'd. Отсутствие чисел для базового преобразования - это полная дрянь, если только вы ее не рассчитаете. Цель, если вы хотите побить emigna, - использовать наименьшее количество уникальных чисел за итерацию. Его ответ царит из-за 88 в секунду до последней итерации. Действительно отличный ответ.10
и сделать что-то в двоичном виде. Но я не знаю, сможем ли мы сгенерировать первую программу из двоичного кода безB
.Java 8, цепочка из 2 функций,
90 + 1037 + 428 + 4 = 32 байтаЧто эквивалентно:
-57 байт благодаря @ OlivierGrégoire .
Попробуйте онлайн.
Который возвращает строку:
Попробуйте онлайн.
Который возвращает целое число:
источник
\u0076\u002D\u003E\u0022\u0076\u002D\u003E\u0022+(3\u002D2)
(59 байт + 4 байта). Правила гласят: «Ни одна из ваших программ не может использовать какие-либо символы», поэтомуv->1
действует, потому что финал1
не программа.v->1
возвращение 1 действительно, но в моем исходном ответе\u0031
будет 1, аv->1
затем также 1. Хорошее сочетание как Unicode Java, так и обычной Java, хотя. И я играл в гольф еще 2, изменив(2/2)
на2/2
. (PS: Якоб уже имеет ответ «"\44\55\76"
вместо"\u0076\u002D\u003E"
R , 3-цепочка 198 + 44 + 3 байта
Попробуйте онлайн!
Возвращает:
Попробуйте онлайн!
Возвращает:
Попробуйте онлайн!
Возвращает
1
Пояснение:
Первая программа почти полностью написана в восьмеричном представлении, где каждый символ записывается как
\xxx
гдеxxx
находится код ASCII в восьмеричном режиме. В удобочитаемой для человека форме будет:Здесь, чтобы избежать использования круглых скобок, мы переопределяем префиксный оператор,
+
равныйcat
функции, а затем используем его для печати следующей строки. Даже после назначенияcat
на+
, последний по- прежнему сохраняет свой префикс оператора «статус» и будет просто принять то , что следует за ним в качестве первого параметра.Вторая программа просто печатает символы,
F^F
получая их из десятичного ASCII:70,94,70
Так как в первой программе мы использовали восьмеричное представление, только цифры
8
и9
могут свободно использоваться; следовательно, мы получаем70
и94
с некоторыми различиями между числами только8's
и9's
.Наконец, последняя программа,
F^F
использует^
функцию (степень), которая приводитFALSE
к0
вычислению и0^0
возвращению1
Кредиты для:
+
, чтобы избежать скобокПредыдущая версия :
R , 2-цепочка
27 + 324 + 2 байтаПопробуйте онлайн!
Возвращает:
Попробуйте онлайн!
Возвращает
1
.источник
cat
обязательным?"wri\164e"(function args)
чтобы избежатьt
или других подобных кодировокcat(intToUtf8(c(49,76)))
будет работать и будет немного короче. Не расширяет цепочку, хотя.Python 2 , 2-цепочка, 7 + 44 = 51 байт
а также
Попробуйте онлайн!
Код base 16 переводится в
print 1
, который возвращается анонимной функцией.источник
Perl 5 с 3 цепями,
151139 символов (114 + 20 + 5)Уродство внутри
&{ }
вычисленийCORE::syswrite
равно, и поэтому строка с шестнадцатеричным экранированием выводится на стандартный вывод в виде:Обратите внимание, что ^ C и ^ R в приведенном выше символе представляют буквенные управляющие символы. (И не путать с буквальной
^
кареткой, которая встречается между двумя строками.)Эта программа в свою очередь выводит:
источник
Октава , 3 программы, длина 42 байта
Выходы:
[[63 24]*2 '']
. Попробуйте онлайн!Выходы:
~0
. Попробуйте онлайн!Выходы:
1
. Попробуйте онлайн!источник
Cjam, 4-цепочка, 28 + 20 + 3 + 1 = 52 байта
Фрагмент 1:
Фрагмент 2:
Фрагмент 3:
Фрагмент 4:
Который затем печатает 1.
Попробуйте онлайн!
Заметка:
Поскольку Cjam не имеет интерпретации для escape-символов, те, что в фрагменте 1, присутствуют только для лучшего просмотра в Интернете. Вам нужно использовать соответствующие фактические символы для запуска фрагмента.
Если я не смогу побрить больше персонажей, тогда добро пожаловать в @Emigna за
05AB1E
ответ!источник
1
использованный в фрагменте 1Excel, цепочка 2, 27 + 3 байта
Не уверен, что это нормально ...
источник
CHAR(61)&
в начале не должно быть и цепочки из 2?CHAR
станьтеCAR
, 3 байта сохранены), не уверен, что другой язык уменьшит его больше--1
в ячейке и нажав Enter, он просто отобразится1
на экране ...=
неявно, если вы печатаете--1
.=
метку для+1
(но это делает для--1
), поэтому я не буду рассматривать это как выражение. И я не уверен, если просто записать1
в ячейку и назвать его «вывод 1» является действительным. Вот почему--1
используется.байт-код x86, цепочка 2, 10 + 4 байта
(Собран с FASM, формат PE)
ÇA.Ï?¿<÷Y.
производит1À@Ã
в адресе рядом с ним и выполняет его, который возвращает1
в EAX (согласно FastCall). В обоих случаях.
фактически представляетA
или LF.В шестнадцатеричном виде:
C7 41 0A CF 3F BF 3C F7 59 0A
и31 C0 40 C3
.Разобрал:
производит
Это (ab?) Использует тот факт, что точка входа программы сохраняется в ecx, а затем записывает инверсию исполняемого кода в адрес на 10 байтов и отрицает ее.
Может или не может сломаться, если собран с чем-либо, кроме fasm, с чем угодно, кроме PE или с другой точкой входа.
источник
JavaScript REPL, много байтов, 4 итерации
Лень оптимизировать код JSFUCK
JavaScript REPL, 164 байта, 3 итерации
может быть в состоянии расширить
Попробуйте онлайн!
источник
1
других профессионалов, поэтому первый1
- это программа, а второй - результат{}
s?CJam, 7-цепочка, 92365 + 1819 + 79 + 14 + 9 + 3 + 1 байт
Эта 92365-байтовая программа печатает
какие отпечатки
какие отпечатки
какие отпечатки
какие отпечатки
какие отпечатки
который печатает
1
.источник
MATL , 5 программ, 404 + 159 + 35 + 4 + 1 = 603 байта
Добраться до 4 программ было сложно. 5 программ было очень сложно!
Попробуйте онлайн!
Попробуйте онлайн!
Это может быть моя любимая программа, которую я написал на PPCG:
Попробуйте онлайн!
Попробуйте онлайн!
Попробуйте онлайн!
Объяснение:
Воспользовавшись часами в этой программе, я не буду сейчас писать все объяснения! Я напишу это позже!
Краткое содержание:
Чтобы преобразовать это в строку вместо кодов символов, нам нужно объединить ее с помощью строки
h
. Чтобы получить строку без кавычек или модификаторов XY, мы выполняем базовое преобразование и преобразуем целое число в пробел.источник
CJam, 10 программ, 5,751,122,990 байт
Мне было лень играть в гольф ... Но, очевидно, мне не нужно играть в гольф, чтобы быть конкурентоспособным. Но без игры в гольф немного сложно опубликовать решение в ответе.
Теоретически он должен работать в интерпретаторе JavaScript , но программа слишком длинна для тестирования в браузере. Это должно вывести то же самое в интерпретаторе Java за исключением последней программы. Но это может также исчерпать память в интерпретаторе Java для первых нескольких программ.
Статистика
Первые байты
\n
новая строка во второй программе.Генератор
источник
APL (Dyalog) , 2 цепочки, 15 + 2 = 17 байт
Попробуйте онлайн!
Выводит программу
Что выводит
источник
JavaScript (ES6), 2 функции, 31 + 4 = 35 байт
возвращается
_=>1
, который возвращает1
Показать фрагмент кода
источник
Желе ,
38 37 3635 байт, Цепочка из 4Попробуйте онлайн! ( 18 байт)
Попробуйте онлайн! ( 13 байт)
Попробуйте онлайн! ( 3 байта)
Попробуйте онлайн! ( 1 байт)
18 + 13 + 3 + 1 = 35 байт
Как?
источник
Python 2 , 3 фрагмента, 68 + 12 + 3 = 83 байта
который производит строку восьмеричных литералов:
который производит:
Который, наконец, производит
1
.Попробуйте онлайн!
источник
Java 8, 3 программы, 431 байт
Программа 1, 332 байта
Лямбда из одного (пустого) параметра любого типа в
String
.Это всего лишь лямбда с символами стрелки, экранированными Unicode, возвращающими текст второй программы, закодированной восьмеричными escape-последовательностями.
Попробуйте онлайн
Программа 2, 93 байта
Фрагмент создания
String
.Попробуйте онлайн (с добавлением возврата)
Программа 3, 6 байтов
Лямбда из одного (пустого) параметра любого типа в
int
.Попробуйте онлайн
источник
\166
в гольф\44
на -1 байт, так как$
это также допустимое имя переменной. Попробуйте онлайн , в результате чего$->9-8
( Попробуйте онлайн. )\uXXXX
в первом коде , чтобы избежать->
. Затем вам понадобится либоreturn
(функция), либоSystem.out
(фрагмент или функция), оба содержат тот,u
который вы уже использовали\uXXXX
. Поэтому я лично считаю, что эта запись недействительна, и я соответственно проголосовал за нее.System.console().printf
может быть использовано для предотвращения использованияu
. Нечто подобное сделано в этом ответе, и я также использовал это в этих двух моих ответах .x->"\146\157\162\50\143\150\141\162\40\44\72\156\145\167\40\143\150\141\162\133\135\173\47\171\47\54\47\54\47\54\47\75\47\54\47\70\47\54\47\56\47\54\47\70\47\175\51\123\171\163\164\145\155\56\143\157\156\163\157\154\145\50\51\56\160\162\151\156\164\146\50\53\53\44\53\156\145\167\40\123\164\162\151\156\147\50\51\51\73"
(319 байт) превращается вfor(char $:new char[]{'y',',','=','8','.','8'})System.out.printf(++$+new String());
(89 байт) превращается вz->9/9
(6 байт). Итого: 404 байта.System.console()
для 2-й программы, которая правильно 89 байтов (в то время какSystem.out
делает это 83 байта).SmileBASIC, цепочка 3, 375 байт
Выходы:
Выходы:
Выходы:
источник
PHP 7.0, 2-цепочечный, 35 + 8 = 43 байта
При написании своего первоначального ответа я понял, что могу просто использовать base64-кодирование второго эха. Он сбрил 11 байтов, так что вот оно. Вы также можете найти мою оригинальную идею ниже.
Запустите с помощью php -r:
Это выводит:
Который тогда явно печатает:
Выход:
Мой код при запуске в терминале. Добавленный && echo предназначен только для удобства чтения.
Комментарии:
Там не так много на самом деле. Очень просто, если вы знаете, что "?>" Неявно действует как ";". «Хитрая» часть заключалась в том, чтобы выяснить, что кодировать:
В качестве альтернативы мы также можем использовать «echO» и «ECHo» (36 + 7 = 43 байта).
Мы также можем переключить; и?> вокруг, используя это. Он работает одинаково хорошо, и все это имеет одинаковую длину.
Мое первоначальное решение:
PHP 7.0, 2-цепочечный, 44 + 10 = 54 байта
Это лучшее, что я мог придумать на первый взгляд. Я понял, что «уникальные символы» означают «эхо», не равное «ЭХО». Надеюсь, я понял это правильно!
Запустите с помощью php -r:
Это выводит:
Что в свою очередь дает нам наш номер:
Выход:
Мой код при запуске в терминале. Добавленный && echo предназначен только для удобства чтения.
Некоторые комментарии:
Спасибо за вызов, я кое-что узнал сегодня!
источник
Lua, 2 цепочки, 83 + 8 = 91 байт
Выходы
Какие выводы
источник
Древесный уголь, 2 программы, 10 + 2 = 12 байт
Попробуйте онлайн! Выходы
Попробуйте онлайн! Какие выходы 1.
источник
Braingolf , 2 цепочки, 9 + 2 = 11 байт
Попробуйте онлайн!
Это выводы
Попробуйте онлайн!
(Плюс некоторый вывод по умолчанию, который можно игнорировать в соответствии с правилами ОП)
Это в свою очередь выводит
источник
Röda , 2 цепочки, 31 + 3 = 34 байта
Фрагмент 1:
Попробуйте онлайн!
Фрагмент 2:
Попробуйте онлайн!
Они являются фрагментами, потому что каждая действительная программа Röda должна включать
main{...}
раздувание. Они также являются действительными программами Röda REPL.источник
DC , 3 программы, 48 байт
Первый:
Выходит второе:
Урожай третий:
Урожайность
1
.Попробуйте онлайн! (добавлен код очистки стека и печати новой строки, чтобы все три бита работали за один раз).
Возможно, лучше всего начать с третьей программы
KZn
. Есть только несколько способов напечатать вещиdc
, и я понял, что на этом этапе я, вероятно, застряну с однимp
или сn
обоими, которые находятся в сотнях в десятичном ASCII. Это означает, что мне почти наверняка придется сгенерировать 1 вместо того, чтобы просто использовать программу1n
.K
помещает в стек текущую (по умолчанию: 0) точность иZ
количество цифр в верхней части стопки, что дает нам 1 для печати.Вторая программа довольно проста.
P
печатает символ с заданным значением ASCII, поэтому мы печатаем75
(K
)90
(Z
) и наконец110
(n
), что прекрасно работает. Это также означает, что, помимо вышеупомянутого 1, я не могу использовать цифры 5, 7, 9 или 0 в другом месте. Мне также нужен метод, отличный отP
преобразования чисел в символы.Тогда первая программа должна сделать четыре числа без использования цифр 1, 5, 7, 9 или 0. Она должна сделать
80
(значение ASCIIP
)82 2-
:;75
:AA
(110)I-
(вычесть входной радиус по умолчанию, 10)I2/
(так, 5)2^
(так, 5 ^ 2, 25)-
(75);90
:AA
(110)I2*
(вдвое больше стандартного входного радиуса 10, поэтому 20)-
(90); и110
: ну, это простоAA
. После создания80
мы используемa
для преобразования числа в строку. Там есть несколькоr
обратных иd
деликатных команд, чтобы поставитьP
s в правильные места, а затем, наконец, мы печатаем весь стекf
.Я почти уверен, что не облажался, но у меня немного кружилась голова ...
источник
05AB1E , 5 + 3 = 8 байт
Попробуйте онлайн!
который сразу же возвращается
Я принимаю вывод 1.0 как не равный 1, поэтому я запускаю этот код:
Попробуйте онлайн!
который возвращается
И вот, пожалуйста!
Количество программ =
2
источник
h
(преобразовать в шестнадцатеричное).g
(Получить длину, по умолчанию 0) сt
(квадратным корнем) уже дает десятичную0.0
. С<
(уменьшение на 1) это становится,-1.0
а затемn
(квадрат) превращает это в1.0
. Кроме того, можно заменить<n
с>
(увеличение на 1). ;) Итак, всего 3 байта (gt>
). В качестве альтернативы вы можете использоватьXt
(1
и квадратный корень). PS: Я не уверен , что если1.0
к1
является действительной частью цепи. Я попросил OP проверить. Добро пожаловать в PPCG и приятного пребывания.Рубин, 2 цепочки, 24 + 3 = 27 байт
Выход
источник