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



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.




Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.