Costruisci un quino ciclico mezzo cardinale


18

Un quino ciclico mezzo cardinale è un quino ciclico con due stati, uno perpendicolare all'altro.

Regole

Puoi decidere quale rotazione vuoi implementare, in senso orario o antiorario.

Una volta ruotato, eventuali spazi vuoti nel codice devono essere sostituiti con spazi per preservare il posizionamento.

Il tuo programma deve soddisfare la definizione di comunità di un quine .

Questo è quindi vince il programma più breve in ogni lingua. Il tuo primo programma viene utilizzato per il conteggio dei byte.

Sono vietate le scappatoie standard .

Esempi

Se il tuo programma è:

$_='print';eval

Quindi la prossima iterazione deve essere:

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

o

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

che deve produrre il programma originale:

$_='print';eval

Se il tuo programma è:

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

Quindi la prossima iterazione deve essere:

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

o:

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

che deve produrre il programma originale:

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



1
@dylnan No, l'altro non chiede un quine reciproco.
Martin Ender,

1
Avendo visto finora le risposte, penso che la vera sfida sarebbe quella in senso antiorario o una quina con più di una linea (quindi la rotazione è diversa dalla trasposizione o semplicemente dall'inserimento di nuove righe).
Weijun Zhou,

1
Potresti voler richiedere che i due programmi siano diversi. Altrimenti, le quine che hanno simmetria rotazionale sarebbero risposte valide.
Martin Ender,

Risposte:


14

CJam , 19 17 15 byte

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

Provalo online! Prova la rotazione.

Spiegazione

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

Nel codice ruotato, abbiamo avanzamenti di riga ovunque:

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

Come ha notato Lynn nella precedente sfida di Quine di Dom, l' inserimento di avanzamenti di riga in realtà costituisce ancora un quine valido, perché gli avanzamenti di riga all'interno del blocco verranno comunque mantenuti testualmente, e ci saranno anche avanzamenti di riga nella "_~"stringa per far apparire questi due caratteri alla fine nel loro propria linea. Quindi {s"_~"+...}_~(con avanzamenti di riga) è ancora un framework quine valido (anche se ci sarà un avanzamento di riga aggiuntivo alla fine della stringa). N*ora inserisce ancora più avanzamenti di riga in quella stringa, ma non ci interessa davvero: perché ora ""-ha un avanzamento di riga all'interno di quella stringa in modo da rimuovere effettivamente tutti gli avanzamenti di riga dalla rappresentazione del programma. Quindi finiamo di nuovo con la forma orizzontale del codice, annullando la rotazione.



5

> <> , 22 byte

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

Provalo online!

Ruotato in senso antiorario:

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

Provalo online!

Il primo stampa la linea al contrario con le nuove linee intervallate, e il secondo la stampa al contrario senza le nuove linee.


Questo è molto intelligente!
Esolanging Fruit

Continua ad avvicinarti in modalità difficile!
Dom Hastings

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.