Stampa un negativo simbolico del tuo codice


18

(Questa è una variante di Print a Negative del tuo codice , che mi è piaciuta molto! Grazie a Martin Büttner ♦ - quasi tutto questo testo è suo.)

Consideriamo i simboli come i seguenti caratteri ASCII stampabili (si noti che lo spazio è incluso):

 !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

E gli alfanumerici sono questi:

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

Considera un quadrato di caratteri ASCII stampabili per la lunghezza del lato N, come il seguente:

ONE, 
{two}
&3,+=
!four
f|ve.

Richiediamo inoltre che ogni riga e ogni colonna contengano almeno un simbolo e un alfanumerico. (L'esempio sopra soddisfa questo.)

Definiamo il negativo simbolico di un tale quadrato come un quadrato della stessa dimensione in cui ogni simbolo è sostituito da un alfanumerico e viceversa. Ad esempio, quanto segue sarebbe un negativo simbolico valido dell'esempio precedente:

[&]OK
a...b
1/100
i@#$%
(R) z

La scelta di caratteri specifici è irrilevante purché rientrino nelle categorie sopra.

La sfida

Il tuo compito è scrivere un programma con codice sorgente quadrato con lunghezza lato N> 1, che stampa un negativo simbolico del suo codice sorgente su STDOUT. Gli spazi finali devono essere stampati. È possibile o meno stampare una nuova riga finale.

Si applicano anche le solite regole quine, quindi non è necessario leggere il proprio codice sorgente, direttamente o indirettamente. Allo stesso modo, non si deve assumere un ambiente REPL che stampa automaticamente il valore di ogni espressione immessa.

Il vincitore è il programma con la lunghezza del lato più basso N. In caso di pareggio, vince l'invio con il minor numero di simboli nel codice sorgente. Se c'è ancora un pareggio, vince la prima risposta.


È davvero una sfida di tipo "quine" poiché l'output non deve essere un codice sorgente di alcun tipo?
Liam,

Buon punto, non penso che lo sia davvero.
Luca,

@LiamNoronha Lo considererei un quine generalizzato in quanto l'output è una funzione del codice sorgente e si applicano le regole quine standard.
Martin Ender,

1
Definisci "leggere il tuo codice sorgente"; se esiste un comando che, per esempio, copia i caratteri nell'output, sarebbe un'istanza di detta "lettura"?
Conor O'Brien,

Risposte:


11

GolfScript, 3 × 3 (4 simboli)

4,m
`3/
n*o

Provalo online su Web GolfScript .

Produzione

[0 
1 2
 3]

Come funziona

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 simboli)

[5,
S*3
/N*

Provalo online nell'interprete CJam .

Come funziona

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

Produzione

0 1
 2 
3 4

10

Pyth, 3x3, 4 simboli

S]1
.5;
S]1

Produzione:

[1]
0.5
[1]

Spiegazione:

  • S ordina l'elenco di un elemento ]1
  • Il valore letterale numerico .5viene stampato come 0.5, ;termina l'istruzione (in questo caso non fa nulla)

Ho <alphanum><symbol><alphanum>riflettuto a lungo su come avrei potuto entrare in Pyth o CJam. Non mi è mai venuto in mente di usare i float ... Bel lavoro!
Dennis,

5

C ++, 18 x 18

"Scegli sempre lo strumento peggiore per il lavoro."

#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;}}

Produzione:

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