(Bu çok hoşuma gitti Kodunuzun Negatifini Yazdırın bir varyasyonu ! Martin Büttner sayesinde - bu metnin neredeyse tamamı onun.)
Sembolleri aşağıdaki yazdırılabilir ASCII karakterleri olarak düşünelim (boşluk olduğunu unutmayın):
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
Ve alfanümerikler bunlar:
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Kenar uzunluğu N için aşağıdakiler gibi yazdırılabilir ASCII karakterlerden oluşan bir kare düşünün:
ONE,
{two}
&3,+=
!four
f|ve.
Ayrıca her satırın ve her sütunun en az bir sembol ve bir alfasayısal içermesi gerekir. (Yukarıdaki örnek bunu karşılar.)
Böyle bir karenin sembolik negatifini , her sembolün bir alfasayısal ile değiştirildiği veya tam tersi olduğu aynı boyutta bir kare olarak tanımlarız . Örneğin, aşağıdaki örnek için geçerli bir sembolik negatif olacaktır:
[&]OK
a...b
1/100
i@#$%
(R) z
Belirli karakterlerin seçimi, yukarıdaki kategorilerde oldukları sürece önemsizdir.
Meydan okuma
Göreviniz, kaynak kodunun sembolik bir negatifini STDOUT'a yazdıran, kenar uzunluğu N> 1 olan kare kaynak kodlu bir program yazmaktır. Sondaki boşluklar yazdırılmalıdır. Sondaki tek bir satır yazdırabilir veya yazamayabilirsiniz.
Her zamanki quine kuralları da geçerlidir, bu nedenle doğrudan veya dolaylı olarak kendi kaynak kodunuzu okumamalısınız. Benzer şekilde, girilen her ifadenin değerini otomatik olarak yazdıran bir REPL ortamını varsaymamalısınız.
Kazanan, en düşük kenar uzunluğuna (N) sahip programdır. Beraberlik durumunda , kaynak kodunda en az sayıda simgeye sahip olan başvuru kazanır. Hala bir kravat varsa, en erken cevap kazanır.