(这是“ 打印否定代码”的一种变体,我很喜欢它!感谢MartinBüttner♦ -几乎所有文本都是他的。)
让我们考虑这些符号为以下可打印的ASCII字符(请注意其中包含空格):
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
和字母数字是这些:
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
考虑边长为N的正方形可打印ASCII字符,如下所示:
ONE,
{two}
&3,+=
!four
f|ve.
我们还要求每一行和每一列至少包含一个符号和一个字母数字。(以上示例满足了此要求。)
我们将此类正方形的符号负数定义为相同大小的正方形,其中每个符号均被字母数字代替,反之亦然。例如,以下将是上述示例的有效符号否定符号:
[&]OK
a...b
1/100
i@#$%
(R) z
特定字符的选择无关紧要,只要它们在上述类别中即可。
挑战
您的任务是编写一个边长为N> 1的方形源代码程序,该程序会将其源代码的符号负输出到STDOUT。必须打印尾随空格。您可能会或可能不会打印单个尾随换行符。
普通的规则也适用,因此您不得直接或间接阅读自己的源代码。同样,您不能假定REPL环境会自动打印每个输入表达式的值。
获胜者是边长最小的程序。如果出现平局,则以源代码中符号最少的提交为准。如果仍然有平局,则最早的答案会获胜。
因为输出不需要是任何类型的源代码,这真的是一个“ quine”类型的挑战吗?
—
利亚姆
好点,我认为实际上不是。
—
路加福音
@LiamNoronha我认为它是广义的quine,因为输出是源代码的函数,并且适用标准quine规则。
—
Martin Ender
定义“读取自己的源代码”;如果有一条命令,例如,将字符复制到输出,这是否是所述“读取”的实例?
—
Conor O'Brien 2015年