Напишите два фрагмента кода, которые мы будем называть s_zero и s_one.
Программа (l, n) состоит из l копий s_zero и s_one, соответствующих двоичным цифрам n, дополненных слева s_zero.
Например, если s_zero = foo
и s_one =, bar
то
программа (4, 0) = foofoofoofoo
программа (4, 1) = foofoofoobar
программа (4, 2) = foofoobarfoo
и т. Д.
Программа (l, n) должна распечатать исходный текст программы (l, (n + 1) mod (2 ^ l)). В приведенном выше примере foobarfoofoo
необходимо печатать foobarfoobar
при выполнении.
Ваша оценка - это сумма длин фрагментов s_zero и s_one
code-golf
quine
source-layout
QuadmasterXLII
источник
источник
Ответы:
CJam, 29 + 29 = 58 байт
Код 0:
Код 1:
объяснение
источник
CJam, 47 + 47 = 94 байта
Код 0:
Код 1:
Извините за ругательство.
Я уверен, что смогу сбрить там несколько байтов. Я добавлю объяснение, как только решу, что больше не буду беспокоиться об игре в гольф.
Проверьте это здесь.
источник
CJam, 45 + 45 = 90 байт
Код 0 :
Код 1 :
Объяснение в ближайшее время.
Попробуйте онлайн здесь
источник
GolfScript, 37 + 37 = 74 байта
Не так коротко, как в C23am-решении user23013 , но я решил, что в любом случае опубликую это, если только (незначительно) увеличить разнообразие используемых языков.
Мое решение не основано непосредственно на каком-либо из существующих решений (и, на самом деле, я не изучил их подробно, так как я до сих пор не очень хорошо читаю CJam), но все они имеют варианты одной и той же базовой структуры quine (
{".~"}.~
в GolfScript,{"_~"}_~
в CJam). Это на самом деле не очень удивительно, так как кажется, что это один из наиболее эффективных способов написать квин с произвольной полезной нагрузкой на этих языках.В этом коде есть несколько частей, которые мне не очень нравятся, и я подозреваю, что это возможно и дальше, но я потратил слишком много времени на это, как есть.
источник