Построить половину кардинального циклического квина

18

Полукардинальная циклическая квина - это циклическая квина с двумя состояниями, одно перпендикулярно другому.

правила

Вы можете решить, какое вращение вы хотите осуществить, по часовой стрелке или против часовой стрелки.

После поворота все пробелы в вашем коде должны быть заменены пробелами для сохранения позиционирования.

Ваша программа должна соответствовать определению сообщества Quine .

Это поэтому выигрывает самая короткая программа на каждом языке. Ваша первая программа используется для подсчета байтов.

Стандартные лазейки запрещены.

Примеры

Если ваша программа:

$_='print';eval

Тогда следующая итерация должна быть либо:

$
_
=
'
p
r
i
n
t
'
;
e
v
a
l

или

l
a
v
e
;
'
t
n
i
r
p
'
=
_
$

который должен вывести оригинальную программу:

$_='print';eval

Если ваша программа:

;$_=';
;$_=';
print

Тогда следующая итерация должна быть либо:

;;
''t
==n
__i
$$r
;;p

или:

p;;
r$$
i__
n==
t''
 ;;

который должен вывести оригинальную программу:

;$_=';
;$_=';
print
Дом Гастингс
источник
Относящиеся .
Дом Гастингс
1
Несколько связано.
Мартин Эндер
1
@dylnan Нет, другой не просит взаимной куны.
Мартин Эндер
1
Посмотрев ответы до сих пор, я думаю, что реальная проблема будет против часовой стрелки или quine с более чем одной строкой (так что вращение отличается от транспонирования или просто вставки новых строк).
Вейцзюнь Чжоу
1
Возможно, вы захотите, чтобы две программы были разными. В противном случае, квины, которые имеют вращательную симметрию, будут правильными ответами.
Мартин Эндер

Ответы:

14

CJam , 19 17 15 байт

{s"_~"+N*""-}_~

Попробуйте онлайн! Попробуйте вращение.

объяснение

{s"_~"+  e# Standard quine framework. Puts a string representation of the entire
         e# program on the stack.
  N*     e# Riffle linefeeds into the string, which is effectively a clockwise
         e# rotation by 90°.
  ""-    e# Does nothing.
}_~

В повернутом коде у нас везде есть перевод строки:

{
s
"
_
~
"
+
N
*
"
"
-
}
_
~

Как заметила Линн в предыдущем вызове Dom для Quine, вставка перевода строки фактически все еще образует действительный quine, потому что перевод строки внутри блока все равно будет сохранен дословно, и в "_~"строке также будет перевод строки, чтобы эти два символа в конце отображались на их собственная линия Таким образом {s"_~"+...}_~(с переводами строки) все еще является действующей структурой quine (хотя в конце строки будет дополнительный перевод строки). N*теперь вставляет в эту строку еще больше перевода строки, но нам все равно: потому что теперь ""-внутри этой строки есть перевод строки, так что он фактически удаляет все переводы строки из представления программы. Таким образом, мы снова получаем горизонтальную форму кода, отменяя вращение.

Мартин Эндер
источник
5

> <> , 22 байта

 "2+}>oao#ov*48}}*d3'v

Попробуйте онлайн!

Повернуто против часовой стрелки:

v
'
3
d
*
}
}
8
4
*
v
o
#
o
a
o
>
}
+
2
"

Попробуйте онлайн!

Первый печатает строку в обратном порядке с перемеженными знаками новой строки, а второй печатает ее в обратном порядке без перевода строки.

Джо Кинг
источник
Это очень умно!
Esolanging Fruit
Хорошо подходит к нему в сложном режиме!
Дом Гастингс