В этом варианте Quine ваша программа должна вывести свой исходный код, транспонированный по диагонали от верхнего левого угла до нижнего правого. Например:
ваша программа на четыре строки
выходы
yof
ono
u u
r r
p l
r i
o n
g e
r s
a
m
Пробелы в выходных данных не являются произвольными. Пробелы появляются в двух ситуациях: где в оригинале есть пробел (например, между r
и l
в четвертом столбце) и где необходимо добавить символы (например, все пробелы в первом столбце). Оба требуются, и пробелы нигде не могут появляться еще в выходной.
Отдельный завершающий символ новой строки в выходных данных может быть опционально проигнорирован. Конечные переводы строк в исходном коде не влияют на вывод, и начальные переводы строк в исходном коде должны обрабатываться, как в примере выше. Предположим, что каждый символ, не являющийся символом новой строки, имеет ширину в один столбец и высоту в одну строку, хотя для таких символов, как символ табуляции, это может привести к ужасному выводу.
Ваше решение должно содержать как минимум две строки, содержащие не менее двух символов, не являющихся символами новой строки, и не должно иметь своей собственной транспонирования (выходные данные не могут быть идентичны источнику.)
Мошенничество с квин-кодами, которые читают из файла, содержащего их исходный код, извлекают данные из URL-адреса, используют встроенные функции квинтинга и т. Д., Не допускается.
Это код гольфа: выигрывает самый короткий код в байтах.
Ответы:
CJam, 14 байтов
Проверьте это здесь.
Хотя короче, вероятно, немного менее интересно, чем решение Fission.
объяснение
источник
Деление , 17 байт
Все еще мой любимый язык для куин ...
Попробуйте онлайн!
объяснение
Это очень похоже на основную квину деления . На самом деле, если бы не правило «должно быть как минимум две строки, по крайней мере, с двумя не-символами новой строки в каждой», я просто мог бы перенести это и заменить
R
наD
. Это правило делает вещи немного интереснее, потому что нам нужно напечатать еще одну строку.Поток управления начинается
D
с одного атома, идущего на юг. Так как это поражает,"
это обернет вокруг и напечатаетна STDOUT, похоже на то, как это было бы в обычной Quine.
'!
затем устанавливает массу атома в код символа!
. Это0
телепорт, который транспортирует атом во второй столбец, где он все еще движется на юг.При этом
+
мы увеличиваем массу атома до значения"
.!N!
печать цитаты, перевод строки, цитата. STDOUT теперь выглядит так:Обернувшись, атом попадает в другой
"
и теперь печатает дословно вторую строку:Мы закончили сейчас. Атом снова использует телепорт и приземляется в том,
;
что уничтожает его и тем самым завершает программу.Я полагаю, что самое интересное здесь - это поместить один
"
внизу, а другой вверху, чтобы я мог распечатать их за один раз, не устанавливая значение!
еще раз (потому что оно будет перезаписано при повторном входе в строковый режим).источник
Javascript ES6, 90 байт
Не плохо, не плохо.
объяснение
Вот стандартная структура Quine:
Чтобы изменить, я просто разделил строку квин по новым строкам и символам, чтобы создать матрицу символов, транспонировал с помощью 2 функций карты и объединил для создания выходных данных.
источник
Stax , 23 байта
Попробуйте онлайн!
Адаптация
"34bL"34bL
квина, основанная на идее, используемой в цитатах во многих языках.источник
Befunge-93 , 57 байт
Это работает, помещая каждый символ в первый столбец в стеке (кроме самой кавычки), затем печатая каждый элемент из стека. После этого он печатает кавычку, печатает новую строку, а затем переходит ко второму столбцу. Это делает то же самое без печати новой строки.
Вы можете проверить это по ссылке в заголовке, но вам нужно будет скопировать код в окно самостоятельно. Если вы нажмете кнопку «медленно», она покажет вам путь, по которому идет указатель, и стек в данный момент.
источник
"
только один раз, чтобы вы могли переместить некоторый код из первого столбца во второй.Python 2,
917569 байтПопробуйте онлайн
Объяснение:
Это использует модификацию стандартного quine:
После модификации:
Этого было бы достаточно, если бы была разрешена одна строка. Затем я добавил два символа во 2-ю строку, чтобы выполнить это требование. В
#
символы на второй линии могут быть заменены на что - либо, так долго , как вы измените их в первой строке, тоже, и это делает программа синтаксически правильным.Чтобы напечатать это правильно сейчас, я должен напечатать
#
в конце первых двух строк. Поэтому я удаляю первые два символа из строкиs
и печатаю их#
перед печатьюs%s
. Я поместил один из#
первых в начало,s
чтобы сохранить несколько байтов, удаляя символ новой строки.источник