(Dies ist eine Variation von Print a Negative Ihres Codes , die mir sehr gut gefallen hat! Dank an Martin Büttner ♦ - fast der gesamte Text stammt von ihm.)
Wir betrachten die Symbole als die folgenden druckbaren ASCII-Zeichen (beachten Sie, dass Leerzeichen enthalten sind):
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
Und die alphanumerischen Zeichen dafür sind:
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Betrachten Sie ein Quadrat aus druckbaren ASCII-Zeichen für die Seitenlänge N wie folgt:
ONE,
{two}
&3,+=
!four
f|ve.
Wir fordern auch, dass jede Zeile und jede Spalte mindestens ein Symbol und eine alphanumerische Zeichenfolge enthält. (Das obige Beispiel erfüllt dies.)
Wir definieren das symbolische Negativ eines solchen Quadrats als ein Quadrat gleicher Größe, bei dem jedes Symbol durch ein alphanumerisches ersetzt wird und umgekehrt. Das Folgende wäre beispielsweise ein gültiges symbolisches Negativ des obigen Beispiels:
[&]OK
a...b
1/100
i@#$%
(R) z
Die Auswahl bestimmter Zeichen ist irrelevant, solange sie in den obigen Kategorien sind.
Die Herausforderung
Ihre Aufgabe ist es, ein Programm mit quadratischem Quellcode mit der Seitenlänge N> 1 zu schreiben, das ein symbolisches Negativ seines Quellcodes an STDOUT ausgibt. Nachgestellte Leerzeichen müssen gedruckt werden. Sie können eine einzelne nachgestellte Zeile drucken oder nicht.
Es gelten auch die üblichen Quine-Regeln. Sie dürfen also weder direkt noch indirekt Ihren eigenen Quellcode lesen. Ebenso dürfen Sie keine REPL-Umgebung annehmen, die automatisch den Wert jedes eingegebenen Ausdrucks ausgibt.
Der Gewinner ist das Programm mit der niedrigsten Seitenlänge N. Im Falle eines Gleichstands gewinnt der Beitrag mit den wenigsten Symbolen im Quellcode. Wenn es immer noch ein Unentschieden gibt, gewinnt die früheste Antwort.