Yarım kardinal döngüsel bir kinin oluşturulması


18

Yarım kardinal siklik kine, biri diğerine dik iki durumlu siklik bir kınadır.

kurallar

Hangi dönüşü uygulamak istediğinize saat yönünde veya saat yönünün tersine karar verebilirsiniz.

Döndürüldükten sonra, konumlandırmayı korumak için kodunuzdaki boşluklar boşluklarla değiştirilmelidir.

Programınızın topluluk tanımını karşılaması gerekir .

Bu bu yüzden her dilde en kısa program kazanır. Sizin ilk program bayt sayım için kullanılır.

Standart boşluklar yasaktır.

Örnekler

Programınız:

$_='print';eval

O zaman bir sonraki yineleme şunlardan biri olmalıdır:

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

veya

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

orijinal program çıktısı:

$_='print';eval

Programınız:

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

O zaman bir sonraki yineleme şunlardan biri olmalıdır:

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

veya:

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

orijinal program çıktısı:

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



1
@dylnan Hayır, diğeri karşılıklı bir soru sormuyor.
Martin Ender

1
Şimdiye kadar cevapları gördükten sonra gerçek meydan okuma saat yönünün tersine bir ya da birden fazla satır ile bir quine olacağını düşünüyorum (böylece rotasyon transpozisyondan ya da sadece yeni satırlar eklemek farklıdır).
Weijun Zhou

1
İki programın farklı olmasını isteyebilirsiniz. Aksi takdirde, dönme simetrisine sahip olan sorgular geçerli cevaplar olacaktır.
Martin Ender

Yanıtlar:


14

CJam , 19 17 15 bayt

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

Çevrimiçi deneyin! Döndürmeyi deneyin.

açıklama

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

Döndürülmüş kodda, her yerde hat beslememiz var:

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

As Lynn Dom'un önceki quine meydan fark takmadan linefeeds bloğun içine linefeeds sadece harfi harfine zaten muhafaza edilecek ve aynı zamanda linefeeds olacak çünkü aslında hala geçerli Quine oluşturan "_~"sonunda bu iki karakter üzerinde görünmesi için dize onların kendi hattı. Yani {s"_~"+...}_~(satır besleme ile) hala geçerli bir kine çerçevesi (dizenin sonunda ek bir satır besleme olsa da). N*bu dizeye daha da fazla satır beslemesi ekliyor, ancak gerçekten umursamıyoruz: çünkü şimdi ""-bu dizenin içinde bir satır beslemesi var, bu nedenle tüm satır beslemelerini program temsilinden kaldırıyor. Bu nedenle, kodun yatay formuyla tekrar dönüyoruz ve dönüşü geri alıyoruz.




Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.