(Это вариант « Печать негатива вашего кода» , который мне очень понравился! Спасибо Мартину Бюттнеру ♦ - почти весь этот текст принадлежит ему.)
Давайте рассмотрим символы как следующие печатные символы ASCII (обратите внимание, что пробел включен):
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
И буквенно-цифровые обозначения должны быть такими:
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Рассмотрим квадрат печатных символов ASCII для длины стороны N, например:
ONE,
{two}
&3,+=
!four
f|ve.
Мы также требуем, чтобы каждая строка и каждый столбец содержали хотя бы один символ и один алфавитно-цифровой. (Приведенный выше пример удовлетворяет этому.)
Мы определяем символьный минус такого квадрата как квадрат такого же размера, где каждый символ заменяется буквенно-цифровым и наоборот. Например, следующее будет действительным символическим отрицанием вышеприведенного примера:
[&]OK
a...b
1/100
i@#$%
(R) z
Выбор конкретных символов не имеет значения, если они находятся в категориях выше.
Соревнование
Ваша задача - написать программу с квадратным исходным кодом с длиной стороны N> 1, которая печатает символический минус своего исходного кода в STDOUT. Конечные пробелы должны быть напечатаны. Вы можете или не можете печатать один завершающий символ новой строки.
Также применяются обычные правила quine, поэтому вы не должны читать свой собственный исходный код, прямо или косвенно. Кроме того, вы не должны предполагать среду REPL, которая автоматически печатает значение каждого введенного выражения.
Победителем становится программа с наименьшей длиной стороны N. В случае ничьей выигрывает представление с наименьшим количеством символов в исходном коде. Если еще есть галстук, выигрывает самый ранний ответ.