(Il s'agit d'une variante de Imprimer un négatif de votre code , que j'ai beaucoup appréciée! Merci à Martin Büttner ♦ - presque tout ce texte est le sien.)
Considérons les symboles comme les caractères ASCII imprimables suivants (notez que l'espace est inclus):
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
Et les alphanumériques à être ceux-ci:
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Considérons un carré de caractères ASCII imprimables pour la longueur de côté N, comme suit:
ONE,
{two}
&3,+=
!four
f|ve.
Nous exigeons également que chaque ligne et chaque colonne contiennent au moins un symbole et un alphanumérique. (L'exemple ci-dessus satisfait cela.)
Nous définissons le négatif symbolique d'un tel carré comme étant un carré de même taille où chaque symbole est remplacé par un alphanumérique et vice versa. Par exemple, ce qui suit serait un négatif symbolique valide de l'exemple ci-dessus:
[&]OK
a...b
1/100
i@#$%
(R) z
Le choix de caractères spécifiques est sans importance tant qu'ils se trouvent dans les catégories ci-dessus.
Le défi
Votre tâche consiste à écrire un programme avec un code source carré avec une longueur latérale N> 1, qui imprime un négatif symbolique de son code source dans STDOUT. Les espaces de fin doivent être imprimés. Vous pouvez ou non imprimer une seule nouvelle ligne de fin.
Les règles de quine habituelles s'appliquent également, vous ne devez donc pas lire votre propre code source, directement ou indirectement. De même, vous ne devez pas supposer un environnement REPL qui imprime automatiquement la valeur de chaque expression entrée.
Le gagnant est le programme avec la plus petite longueur de côté N. En cas d'égalité, la soumission avec le moins de symboles dans le code source l'emporte. S'il y a toujours égalité, la première réponse l'emporte.