Задача:
Кодируйте две программы, где каждая из программ выводит оба исходных кода, чередующихся на символ, например, застежка-молния, двойная щель Quine. Вывод двойного разреза Куайна начинается с первого символа из исходного кода первой программы. Если исходный код одной из программ короче по длине, чем другая, то остальная часть вывода должна быть заполнена оставшейся частью более длинного исходного кода.
Правила:
- Вы можете использовать любой язык программирования для обеих программ, необязательно один и тот же язык программирования для обеих.
- Ваши программы не должны принимать какие-либо данные из файла, имени файла, сети, другой программы или чего-либо еще.
Обязательные критерии:
- Есть загвоздка, где-то в выводе слово
QUINE
заглавными буквами должно существовать непрерывно. - Вам необходимо указать, какие два языка программирования вы используете. Если вы используете один и тот же язык программирования для обоих, вам нужно указать только один язык программирования.
- Обе программы должны быть в состоянии исполняться или интерпретироваться независимо от другой программы.
Пример:
Имея этот пример исходного кода программы один :
"QIE"
Имея этот пример исходного кода программы два :
"UN"
Тогда действительный вывод Quine с двумя щелями из обеих программ должен быть:
""QUINE""
Это код-гольф, выигрывает наименьшее количество байтов при суммировании длины обоих исходных кодов и, очевидно, также длины каждой выходной программы!
A
иXYZ
чередоваться?AXYZ
?.+
илиz
работаетОтветы:
CJam,
4947 байтова также
обе печати
Попробуйте онлайн: программа 1 , программа 2 , подтверждение действительности
Как они работают
Программа 1 заканчивается здесь и имеет строковое представление всего своего исходного кода (который каждый символ повторяется дважды), а также строку e # QUINE в стеке.
Программа 2 дополнительно разбирает
e#QUINE
, что является комментарием.В обоих случаях CJam автоматически печатает две строки, что приводит к вышеупомянутому выводу.
источник
Серьезно,
465642 байтаШестнадцатеричный дамп:
Вторая программа - это точная программа в обратном порядке. Он содержит невидимый символ, но количество байтов правильное. Обе программы выводят эту палиндромную строку:
(По какой-то причине он отображает невидимый символ, когда выводит его в моем терминале. Я не совсем понимаю этот 7F байт.)
Как это работает:
Остальная часть программы не выполняется.
Тогда другое направление:
На данный момент мы запускаем первую программу, указанную выше, поэтому выполнение продолжается, как описано там.
Я активно использую тот факт, что несколько команд здесь ничего не делают со строками или пустыми стеками. Я также использую неожиданное поведение,
t
когда в стеке только один элемент. Не ожидайте, что эта программа будет работать в будущих версиях Seriously.Поскольку онлайн-версия интерпретатора Seriously по-прежнему не работает, вам придется скачать интерпретатор и запустить его на своем компьютере, чтобы протестировать его.
источник
GolfScript, 46 байт
а также
обе печати
Попробуйте онлайн: программа 1 , программа 2 , подтверждение действительности
Как это работает
Исходный код программы 2 дополнительно анализирует
QUINE\n
, что является двумя неопределенными токенами.источник
Perl 61 + 60 = 121 байт
Программа 1:
Программа 2:
Я думал, что я бы попробовал это на неигровом языке. По сути, это всего лишь универсальный конструктор quine в Perl, модифицированный для удвоения каждого символа перед его печатью и добавления
QUINE
в конец. Тогда нам просто нужно вставить комментарий в конец кода, чтобы компенсировать добавленный текст.(Я написал это, не обращая особого внимания на другие ответы. Оказалось, что можно было бы сохранить байт, поместив весь комментарий в одну программу, но я не уверен, стоит ли мне просто копировать подобные алгоритмы.)
источник