Imprima un negativo simbólico de su código

18

(¡Esta es una variación de Imprimir un negativo de su código , que disfruté mucho! Gracias a Martin Büttner ♦ , casi todo este texto es suyo).

Consideremos que los símbolos son los siguientes caracteres ASCII imprimibles (tenga en cuenta que se incluye espacio):

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

Y los alfanuméricos para ser estos:

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

Considere un cuadrado de caracteres ASCII imprimibles para la longitud del lado N, como el siguiente:

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

También requerimos que cada fila y cada columna contengan al menos un símbolo y un alfanumérico. (El ejemplo anterior satisface esto).

Definimos el negativo simbólico de dicho cuadrado como un cuadrado del mismo tamaño donde cada símbolo se reemplaza por un alfanumérico y viceversa. Por ejemplo, lo siguiente sería un negativo simbólico válido del ejemplo anterior:

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

La elección de caracteres específicos es irrelevante siempre que estén en las categorías anteriores.

El reto

Su tarea es escribir un programa con código fuente cuadrado con longitud lateral N> 1, que imprima un negativo simbólico de su código fuente en STDOUT. Los espacios finales deben imprimirse. Puede o no imprimir una sola línea final.

Las reglas habituales de quine también se aplican, por lo que no debe leer su propio código fuente, directa o indirectamente. Del mismo modo, no debe asumir un entorno REPL que imprima automáticamente el valor de cada expresión ingresada.

El ganador es el programa con la longitud lateral más baja N. En caso de empate, gana la presentación con la menor cantidad de símbolos en el código fuente. Si todavía hay un empate, la primera respuesta gana.

Luke
fuente
¿Es realmente un desafío de tipo "quine" ya que la salida no necesita ser código fuente de ningún tipo?
Liam
Buen punto, no creo que realmente lo sea.
Lucas
@LiamNoronha Lo consideraría una quine generalizada ya que la salida es una función del código fuente y se aplican las reglas estándar de quine.
Martin Ender
1
Defina "leer su propio código fuente"; si hay un comando que, por ejemplo, copia caracteres a la salida, ¿sería esta una instancia de dicha "lectura"?
Conor O'Brien

Respuestas:

11

GolfScript, 3 × 3 (4 símbolos)

4,m
`3/
n*o

Pruébelo en línea en Web GolfScript .

Salida

[0 
1 2
 3]

Cómo funciona

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.
Dennis
fuente
11

CJam, 3 × 3 (5 símbolos)

[5,
S*3
/N*

Pruébelo en línea en el intérprete de CJam .

Cómo funciona

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

Salida

0 1
 2 
3 4
Dennis
fuente
10

Pyth, 3x3, 4 símbolos

S]1
.5;
S]1

Salida:

[1]
0.5
[1]

Explicación:

  • S ordena la lista de un elemento ]1
  • El literal numérico .5se imprime como 0.5, ;termina la declaración (no hace nada en este caso)
Fabian Schmengler
fuente
Pensé mucho sobre cómo podría llegar <alphanum><symbol><alphanum>a Pyth o CJam. Nunca se me ocurrió usar flotadores ... ¡Buen trabajo!
Dennis
5

C ++, 18 x 18

"Elija siempre la peor herramienta para el trabajo".

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

Salida:

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
Luke
fuente