Zbuduj pół kardynalną cykliczną quinę

18

Połowa kardynalna cykliczna szyna jest cykliczną szyną z dwoma stanami, jeden prostopadły do ​​drugiego.

Zasady

Możesz zdecydować, który obrót chcesz zastosować, zgodnie z ruchem wskazówek zegara lub przeciwnie do ruchu wskazówek zegara.

Po obróceniu wszelkie luki w kodzie należy zastąpić spacjami, aby zachować pozycję.

Twój program musi spełniać wspólnotową definicję quine .

To jest więc wygrywa najkrótszy program w każdym języku. Twój pierwszy program jest używany do liczenia bajtów.

Standardowe luki są zabronione.

Przykłady

Jeśli twój program to:

$_='print';eval

Następnie następna iteracja musi być albo:

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

lub

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

który musi wypisać oryginalny program:

$_='print';eval

Jeśli twój program to:

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

Następnie następna iteracja musi być albo:

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

lub:

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

który musi wypisać oryginalny program:

;$_=';
;$_=';
print
Dom Hastings
źródło
Związane .
Dom Hastings
1
Nieco spokrewniony.
Martin Ender
1
@dylnan Nie, ten drugi nie prosi o wspólny quine.
Martin Ender
1
Po zapoznaniu się z dotychczasowymi odpowiedziami wydaje mi się, że prawdziwym wyzwaniem byłby kierunek przeciwny do ruchu wskazówek zegara lub quine z więcej niż jedną linią (tak, że obrót różni się od transpozycji lub po prostu wstawienia nowych linii).
Weijun Zhou
1
Możesz wymagać, aby oba programy były różne. W przeciwnym razie quiny, które mają symetrię obrotową, byłyby poprawnymi odpowiedziami.
Martin Ender

Odpowiedzi:

14

CJam , 19 17 15 bajtów

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

Wypróbuj online! Spróbuj rotacji.

Wyjaśnienie

{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.
}_~

W obróconym kodzie mamy wszędzie dostęp do linii:

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

Jak zauważyła Lynn podczas wcześniejszego wyzwania Doma, wstawianie linii odniesienia nadal tworzy prawidłową wartość quine, ponieważ i tak linie liniowe wewnątrz bloku zostaną zachowane dosłownie, a linie będą miały również ciąg "_~"znaków, aby te dwa znaki na końcu pojawiały się na ich własna linia. Tak więc {s"_~"+...}_~(z linefeeds) wciąż jest prawidłową strukturą quine (chociaż na końcu łańcucha pojawi się dodatkowy linefeed). N*teraz wstawia jeszcze więcej linii do tego ciągu, ale tak naprawdę nas to nie obchodzi: ponieważ teraz ""-ma kanał wewnątrz tego łańcucha, więc faktycznie usuwa wszystkie kanały z reprezentacji programu. Tak więc ponownie otrzymujemy poziomą formę kodu, cofając obrót.

Martin Ender
źródło
5

> <> , 22 bajty

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

Wypróbuj online!

Obrócone w lewo:

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

Wypróbuj online!

Pierwszy drukuje linię w odwrotnej kolejności z przeplatanymi znakami nowej linii, a drugi drukuje ją w odwrotnej kolejności bez znaków nowej linii.

Jo King
źródło
To bardzo sprytne!
Esolanging Fruit
Dobrze jest podejść do tego w trybie trudnym!
Dom Hastings