Распечатайте символический минус вашего кода


18

(Это вариант « Печать негатива вашего кода» , который мне очень понравился! Спасибо Мартину Бюттнеру ♦ - почти весь этот текст принадлежит ему.)

Давайте рассмотрим символы как следующие печатные символы ASCII (обратите внимание, что пробел включен):

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

И буквенно-цифровые обозначения должны быть такими:

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

Рассмотрим квадрат печатных символов ASCII для длины стороны N, например:

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

Мы также требуем, чтобы каждая строка и каждый столбец содержали хотя бы один символ и один алфавитно-цифровой. (Приведенный выше пример удовлетворяет этому.)

Мы определяем символьный минус такого квадрата как квадрат такого же размера, где каждый символ заменяется буквенно-цифровым и наоборот. Например, следующее будет действительным символическим отрицанием вышеприведенного примера:

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

Выбор конкретных символов не имеет значения, если они находятся в категориях выше.

Соревнование

Ваша задача - написать программу с квадратным исходным кодом с длиной стороны N> 1, которая печатает символический минус своего исходного кода в STDOUT. Конечные пробелы должны быть напечатаны. Вы можете или не можете печатать один завершающий символ новой строки.

Также применяются обычные правила quine, поэтому вы не должны читать свой собственный исходный код, прямо или косвенно. Кроме того, вы не должны предполагать среду REPL, которая автоматически печатает значение каждого введенного выражения.

Победителем становится программа с наименьшей длиной стороны N. В случае ничьей выигрывает представление с наименьшим количеством символов в исходном коде. Если еще есть галстук, выигрывает самый ранний ответ.


Действительно ли это проблема типа «quine», поскольку вывод не должен быть исходным кодом какого-либо типа?
Лиам

Хороший вопрос, я не думаю, что это на самом деле.
Лука

@LiamNoronha Я бы посчитал это обобщенным квинем в том смысле, что вывод является функцией исходного кода, и применяются стандартные правила квин.
Мартин Эндер

1
Определите «чтение собственного исходного кода»; если есть команда, которая, скажем, копирует символы в вывод, будет ли это экземпляром «чтения»?
Конор О'Брайен

Ответы:


11

GolfScript, 3 × 3 (4 символа)

4,m
`3/
n*o

Попробуйте это онлайн на Web GolfScript .

Выход

[0 
1 2
 3]

Как это устроено

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 символов)

[5,
S*3
/N*

Попробуйте онлайн в интерпретаторе CJam .

Как это устроено

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

Выход

0 1
 2 
3 4

10

Pyth, 3x3, 4 символа

S]1
.5;
S]1

Выход:

[1]
0.5
[1]

Объяснение:

  • S сортирует список из одного элемента ]1
  • Числовой литерал .5печатается как 0.5, ;завершает оператор (ничего не делает в этом случае)

Я хоть долго и упорно о том, как я мог бы получить <alphanum><symbol><alphanum>в Pyth или CJam. Мне никогда не приходило в голову использовать поплавки ... Отличная работа!
Деннис

5

С ++, 18 х 18

«Всегда выбирайте худший инструмент для работы».

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

Выход:

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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.