Вызов
В этом задании вы будете писать первую программу p 1 из бесконечной последовательности программ, в которой запуск p n выводит / генерирует программу p n + 1 . При объединении первых n> = 2 программ последовательность должна быть выведена n
.
пример
Допустим, первые 4 программы:
p1 p2 p3 p4
Если я должен был бежать p1
, он должен вывести:
p2
Если я должен был бежать p1p2
, он должен вывести:
2
Если бы я должен был запустить p1p2p3p4
это должно вывести:
4
Если бы я должен был запустить p4
, он должен сгенерировать следующую программу в последовательности:
p5
счет
Ваша оценка - это количество байтов первых 10
программ.
code-challenge
code-generation
Downgoat
источник
источник
p1p2p3...
всегда от p1 до pn ?Ответы:
Пиф, 12
p1:
p2:
1
p3:
1
так далее..
p1p2p3:
Выход:
3
Объяснение:
При первом запуске выводится длина строки из одного символа
1
. Это также, оказывается, действительная программа Pyth, выводящая1
снова. Следовательно, pn + 1 всегда1
. Когда программы связаны друг с другом,p1
выводится длина связанных программ, которая будет равнаn
.источник
Lua,
950900 байтUngolfed:
Объяснение:
Первая строка захватывает весь исходный код программы. Затем мы сравниваем длину всей программы с 1 + длиной одной отдельной программы. Если размер текущей программы меньше этого значения, то печатается источник, который является следующей программой, p2, и мы завершаем работу. Каждая итерация - это просто квинна. Когда несколько из них объединяются, условное условие не выполняется, и мы печатаем длину объединенной программы, деленную на длину одной программы, которая является числом объединенных программ, n.
источник
Vitsy , 19 байт
Здесь не рассматриваются строки, а используются приемы метода.
p1
p2
p3
Так далее и так далее.
Объяснение ниже:
Попробуйте онлайн!
источник
Витси , 14 байтов
Как и в ответах Pyth и Jolf, я сопоставляю строки. Единственное отличие состоит в том, что я использую функции переноса строк, чтобы всегда получать правильную длину.
p1
p2
Замените 1 на любое число.
p3 и т. д. соответствуют этому шаблону, и вы можете делать это до
Integer.MAX_VALUE
целочисленного ограничения языка.Объяснение:
Попробуйте онлайн!
источник
Серьезно, 15 байтов
Первая программа, 6 байт (содержит непечатный):
Шестнадцатеричный дамп:
Эта программа печатает
1
: попробуйте онлайнВсе остальные программы -
1
действительная программа, которая печатает себя так же, как ответ Pyth. Оригинальная программа печатает длину своего исходного кода минус 5 и немедленно завершает работу.1
s, добавленные в конец, увеличивают длину исходного кода на 1 байт каждый раз, но никогда не выполняются.источник
Джольф , 14 байт
Попробуй это здесь!
Когда выполнено, это печатает
1
. Таким образом,p2 = 1
. Выполнениеp2
урожаев1
. Таким образом, для всехN > 1
,pN = 1
.Заметим
p1p2
:a-1q41
. Это переносится на:Поскольку неявная печать отключается после первой печати, она печатается
2
, так как длина исходного кода минус 4 равна 2. И так далее, и так далее.источник
Рубин, 318 байт
р 1 :
Каждая отдельная программа р я выводит эту одну строку Quine:
_="_=%p;puts _%%_";puts _%_
.Когда вы добавляете эти квины в конец p 1 , они заканчиваются как линии в
DATA
объекте, потому что они находятся ниже магии__END__
.Вот тест:
Конкатенация первых десяти программ выглядит следующим образом (318 байт):
источник
C #, 2099 + 7 = 2106 байт
Первая программа (использует флаг компилятора
/main:A
):Вторая программа:
Третья программа:
Вы поняли идею.
источник
Javascript ES6, оценка
483455Программа 1, 77 байт:
Программа 2 и более, 42 байта каждая:
источник
PHP, 1470 байт
Программа 1: 219 байт:
программа 2 и более 139 байт:
использовать как:
Использует слегка заигранную версию техники php quine, описанную здесь: http://10types.co.uk/the-lab/a-minimal-php-quine/
источник