Создайте программу, которая выводит себя сама.
Однако, если исходный код повторяется n раз (имеется в виду конкатенация копии исходного кода до конца n-1 раз) , то при исходном исходном коде должна быть вероятность 1 / n, вероятность вывода 1 / n исходный код повторяется дважды, вероятность 1 / n вывода исходного кода повторяется три раза, ... и вероятность 1 / n вывода исходного кода n раз.
Например, если ваша программа есть foobar
, то она всегда должна выводить точно foobar
. Тем не менее, если вы бежите foobarfoobarfoobarfoobar
, то должна быть ¼ вероятностью каждая из вывода foobar
, foobarfoobar
, foobarfoobarfoobar
и foobarfoobarfoobarfoobar
.
- Распределение каждого возможного выхода должно быть равным
- Помимо применения стандартных методов ввода / вывода и запрещенных стандартных лазеек, применяются стандартные правила quine (невозможно получить доступ к собственному источнику и т. Д.)
- Это код гольф, поэтому самый короткий ответ в байтах выигрывает
foobarfoobar
), тогда это будет только печататьfoobar
foobarfoobar
этоfoobar
повторяется два раза, а не один раз.Ответы:
Perl 5 ,
8280 байтПопробуйте онлайн! или тестовый набор
источник
Желе ,
2422 байтаПопробуйте онлайн!
Попробуй это х4!
источник
05AB1E , 32 байта
Попробуйте онлайн!
объяснение
источник
Gol> <> , 21 байт
Попробуйте онлайн!
Объяснение:
источник
Алиса , 35 байт
Попробуйте онлайн!
объяснение
Как и во многих quines в 2D языках, это начинается с того,
"
что оборачивается вокруг себя и выталкивает всю первую строку, кроме"
самой.Добавление одной или нескольких дополнительных копий исходного кода приведет к появлению неявных пробелов в конце строкового литерала. Чтобы сделать это на самом деле квинной, мы усекаем стек до 31 символа.
Нажмите новую строку, затем высоту стека три раза. Значения, выдвигаемые в качестве высоты стека, равны 32 (пробел во второй строке), 33 (пробел во
!
второй строке) и 34 (начальный"
).Снова увеличьте высоту стека, на этот раз как длину исходного кода (35).
Инициализируйте счетчик на 1. Он будет подсчитывать количество повторений исходного кода.
Поверните направо три раза на месте (то есть поверните налево). Каждое дополнительное повторение исходного кода будет вноситься
h
в тот же столбец, что и этот}
, увеличивая счетчик. Когда IP вернется к}
, снова поверните направо, чтобы продолжить в том же направлении.Возьмите равномерное случайное число от 0 до n-1, затем добавьте 1, чтобы получить количество раз, чтобы вывести исходный источник.
Умножьте на ранее заданную высоту стека (длину кода), затем повторите это много раз, нажимая адрес возврата, который много раз минус один.
Выведите вершину стека, не разрушая его.
Переместите нижнюю запись стека наверх.
Повторите, затем завершите после завершения цикла.
источник
JavaScript (Node.js) , 62 байта
Попробуйте онлайн!
источник
Древесный уголь , 58 байт
Попробуйте онлайн! Нет подробной версии, потому что в настоящее время дербосификатор задыхается
"´"
. Главным образом на основе Quine из древесного угля от Golf, вы очень хороший! , Объяснение:Назначают символьной строки
θ⎚×⊕‽L⊞Oυω⁺⪫⁺´≔θ´´θ
вθ
.Очистите любой предыдущий вывод, чтобы вступил в силу только последний вывод.
Вставьте пустую строку в предопределенный массив. Это делает длину массива равной количеству обработанных к настоящему времени повторений, поэтому возьмите его длину, возьмите случайное число в неявном исключающем диапазоне, добавьте 1 и повторите следующую строку много раз.
Добавьте литеральную строку
≔
кθ
, затем вставьте литерал´
s между каждым символом, затем добавьте суффикс другой копииθ
.источник