Drucken Sie ein symbolisches Negativ Ihres Codes


18

(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.


Ist das wirklich eine "quine" Herausforderung, da die Ausgabe kein Quellcode sein muss?
Liam

Guter Punkt, ich denke nicht, dass es tatsächlich so ist.
Luke

@LiamNoronha Ich würde es als verallgemeinertes Quine betrachten, da die Ausgabe eine Funktion des Quellcodes ist und die Standardregeln für Quine gelten.
Martin Ender

1
Definieren Sie "Lesen Sie Ihren eigenen Quellcode"; Wenn es einen Befehl gibt, der zum Beispiel Zeichen in die Ausgabe kopiert , wäre dies eine Instanz des besagten "Lesens"?
Conor O'Brien

Antworten:


11

GolfScript, 3 × 3 (4 Symbole)

4,m
`3/
n*o

Probieren Sie es online im Web GolfScript aus .

Ausgabe

[0 
1 2
 3]

Wie es funktioniert

4,  # Push the array [0 1 2 3].
  m # Undefined token. Does nothing.
`   # Push the string representation of the array. Pushes "[0 1 2 3]".
 3/ # Split into chunks of length 3. Pushes ["[0 " " 1 " "2 3]"].
n*  # Join the chunks, separated by linefeeds. Pushes the output.
  o # Undefined token. Does nothing.

11

CJam, 3 × 3 (5 Symbole)

[5,
S*3
/N*

Probieren Sie es online im CJam-Interpreter aus .

Wie es funktioniert

[   e# Unmatched [. Does nothing.
 5, e# Push [0 1 2 3 4].
S*  e# Join the integers, separating by spaces. Pushes "0 1 2 3 4".
  3 e#
/   e# Split into chunks of length 3. Pushes ["0 1" " 2 " "3 4"].
 N* e# Join the chunks, separated by linefeeds. Pushes the output.

Ausgabe

0 1
 2 
3 4

10

Pyth, 3x3, 4 Symbole

S]1
.5;
S]1

Ausgabe:

[1]
0.5
[1]

Erläuterung:

  • S sortiert die Liste mit einem Element ]1
  • Das numerische Literal .5wird gedruckt als 0.5, ;beendet die Anweisung (tut in diesem Fall nichts)

Ich <alphanum><symbol><alphanum>dachte lange und hart darüber nach, wie ich in Pyth oder CJam kommen könnte. Es ist mir nie in den Sinn gekommen, Schwimmer zu benutzen ... Gute Arbeit!
Dennis

5

C ++, 18 × 18

"Wählen Sie immer das schlechteste Werkzeug für den Job."

#include<cstdio>  
int main(){ for  (
int line =  0lu;  
1lu*line <  18l;  
1lu*line++){pri\  
ntf(line == 0lu * 
123*line? "\x41.\\
x2e\x02e...\x2e\\ 
x42\x02e...\x2e.\ 
CDE\x00a":  14l!= 
1lu*line?".\x2e.\\
x46\x02e...\x47""\
HIJ\x02e..""KLM"  
 /*O*/"\n":  /*The
bad code:*/"NOP.\ 
QRS\x054." "UVW\  
XYZ\x02e" "\x2e\\ 
x2e\x00a"); 0lu;}}

Ausgabe:

A.......B......CDE
...F....GHIJ...KLM
...F....GHIJ...KLM
...F....GHIJ...KLM
...F....GHIJ...KLM
...F....GHIJ...KLM
...F....GHIJ...KLM
...F....GHIJ...KLM
...F....GHIJ...KLM
...F....GHIJ...KLM
...F....GHIJ...KLM
...F....GHIJ...KLM
...F....GHIJ...KLM
...F....GHIJ...KLM
NOP.QRST.UVWXYZ...
...F....GHIJ...KLM
...F....GHIJ...KLM
...F....GHIJ...KLM
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.