Imprimir um negativo simbólico do seu código

18

(Esta é uma variação de Imprima um negativo do seu código , do que gostei muito! Agradecimentos a Martin Büttner ♦ - quase todo esse texto é dele.)

Vamos considerar os símbolos como os seguintes caracteres imprimíveis ASCII (observe que o espaço está incluído):

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

E os alfanuméricos são estes:

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

Considere um quadrado de caracteres ASCII imprimíveis para o comprimento lateral N, como o seguinte:

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

Também exigimos que cada linha e cada coluna contenha pelo menos um símbolo e um alfanumérico. (O exemplo acima satisfaz isso.)

Definimos o negativo simbólico de um quadrado como um quadrado do mesmo tamanho, onde cada símbolo é substituído por um alfanumérico e vice-versa. Por exemplo, o seguinte seria um negativo simbólico válido do exemplo acima:

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

A escolha de caracteres específicos é irrelevante, desde que estejam nas categorias acima.

O desafio

Sua tarefa é escrever um programa com código-fonte quadrado com comprimento lateral N> 1, que imprime um negativo simbólico do seu código-fonte em STDOUT. Os espaços à direita devem ser impressos. Você pode ou não imprimir uma única linha nova à direita.

As regras habituais de quine também se aplicam, portanto, você não deve ler seu próprio código fonte, direta ou indiretamente. Da mesma forma, você não deve assumir um ambiente REPL que imprima automaticamente o valor de cada expressão inserida.

O vencedor é o programa com o menor comprimento lateral N. Em caso de empate, a submissão com o menor número de símbolos no código-fonte vence. Se ainda houver um empate, a resposta mais antiga vence.

Lucas
fonte
Isso é realmente um desafio do tipo "quine", já que a saída não precisa ser um código-fonte de qualquer tipo?
Liam
Bom ponto, acho que não é mesmo.
19415 Luke
@LiamNoronha Eu consideraria um quine generalizado, pois a saída é uma função do código-fonte e as regras padrão do quine se aplicam.
Martin Ender
1
Defina "lendo seu próprio código fonte"; se houver um comando que, digamos, copie caracteres para a saída, isso seria uma instância da referida "leitura"?
Conor O'Brien

Respostas:

11

GolfScript, 3 × 3 (4 símbolos)

4,m
`3/
n*o

Experimente online no Web GolfScript .

Resultado

[0 
1 2
 3]

Como 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
fonte
11

CJam, 3 × 3 (5 símbolos)

[5,
S*3
/N*

Experimente on-line no intérprete CJam .

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

Resultado

0 1
 2 
3 4
Dennis
fonte
10

Pitão, 3x3, 4 símbolos

S]1
.5;
S]1

Resultado:

[1]
0.5
[1]

Explicação:

  • S classifica a lista de um elemento ]1
  • O literal numérico .5é impresso como 0.5, ;finaliza a instrução (não faz nada neste caso)
Fabian Schmengler
fonte
Eu pensei muito sobre como eu poderia entrar <alphanum><symbol><alphanum>em Pyth ou CJam. Nunca me ocorreu usar carros alegóricos ... Bom trabalho!
Dennis
5

C ++, 18 x 18

"Escolha sempre a pior ferramenta para o trabalho."

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

Resultado:

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
Lucas
fonte