编写一个程序,该程序在运行时将输出其自己的源代码,而没有其他任何输出。看起来很简单,对吧?
问题是,当源代码反向时,您的程序必须输出“ Hello,World!”。完全没有引号。
这是代码高尔夫球,因此最低字节数为准。
编辑:您的奎纳必须是适当的奎纳。
编写一个程序,该程序在运行时将输出其自己的源代码,而没有其他任何输出。看起来很简单,对吧?
问题是,当源代码反向时,您的程序必须输出“ Hello,World!”。完全没有引号。
这是代码高尔夫球,因此最低字节数为准。
编辑:您的奎纳必须是适当的奎纳。
Answers:
Upxp"!dlroW ,olleH"
U
捕获一个字符串,从头U
开始直到U
遇到下一个字符串为止,在这种情况下为源代码。p
打印项目,并且x
是终止链接。反转时,它看起来像:
"Hello, World!"pxpU
这将捕获字符串并使用进行打印,并p
再次使用终止程序x
。
U
U
隐式推送?ಠ_ಠ
U
命令是“链链接捕获命令”。它不是用于配对的,但这不会阻止我将其用于配对。:P
p
位完成了输出,这是编码的一部分。
p
并x
不会算。例如,即使代码必须打印出来,最短的SMBF quine仍然被认为是作弊quine。也许值得马丁提出澄清。
f=_=>/\//g&&"f="+f||"!dlroW ,olleH">=_
_=>"Hello, World!"||f+"=f"&&g//\/>=_=f
反转后,它将成为返回字符串的匿名函数Hello, World!
。
正则表达式/\//g
在反转时成为注释,这使语法无效>=_=f
的内容可以在反转代码中注释掉。
=_=
。
trela=a=>alert("trela="+trela+"\ntrela\n``")//
`!dlroW ,olleH`
trela
``
第1行定义trela
了在运行时输出程序源代码的功能。第2行是未分配的字符串,不执行任何操作。第3行和第4行调用trela
滥用模板字符串语法。
``
alert
`Hello, World!`
//)"``n\alertn\"+alert+"=alert"(trela>=a=alert
第1行是未分配的字符串,不执行任何操作。第2行和第3行滥用了模版字符串语法进行打印Hello, World!
。第4行是注释。
``
不必要的吗?
trela
在转发版本中调用该函数(将打印
``
是争论。凉。
trela
在这里看看...> _>
"34¤¤,,,,,,,,,,,,,% 'H'e'l'l'o',' 'w'o'r'l'd'!'"34¤¤,,,,,,,,,,,,,% 'H'e'l'l'o',' 'w'o'r'l'd'!'
反转:
'!'d'l'r'o'w' ','o'l'l'e'H' %,,,,,,,,,,,,,¤¤43"'!'d'l'r'o'w' ','o'l'l'e'H' %,,,,,,,,,,,,,¤¤43"
输出到STDOUT。在找到更好的quine框架之前,现在必须这样做。
"34¤¤,,,,,,,,,,,,,% 'H'e'l'l'o',' 'w'o'r'l'd'!'"
这包含奎因字符串。相反,它被推入堆栈但不输出。
34¤¤,,,,,,,,,,,,,
这会将报价char推入堆栈,并输出两次结果,直到没有剩余输出为止。相反,这将打印堆栈中已经存在的字符代码。
% 'H'e'l'l'o',' 'w'o'r'l'd'!'
这将弹出顶部的堆栈项(相反,这将弹出一个空格字符),并将一系列的字符代码压入堆栈(相反,这些字符随后将由一系列的打印,
)。
@MartinBüttner在这个答案中无耻地改编了出色的奎因
'!+O!'!d'!l'!r'!o'!W'! '!,'!o'!!l'!e'!H'R"
并扭转
"R'H!'e!'l!!'o!',!' !'W!'o!'r!'l!'d!'!O+!'
在quine版本中,原子从R
标题右侧开始。"
开始打印模式,该模式将自动包装到下一个模式"
。这会打印出所有内容,除了"
。 '!+
将原子设置为char "
。 O
打印出来并销毁结束程序的原子。
反转版本从原子的R
每个位置重新开始,并在不破坏原子的情况下将其Hello, World
打印!
出来。对于最后的角色!
,印刷品O
会破坏原子。
print(lambda x:x+repr(x)+")#'!dlroW ,olleH' tnirp")('print(lambda x:x+repr(x)+")#\'!dlroW ,olleH\' tnirp")(')#'!dlroW ,olleH' tnirp
print 'Hello, World!'#)'()"print '\Hello, World!'\#)"+)x(rper+x:x adbmal(tnirp'()"print 'Hello, World!'#)"+)x(rper+x:x adbmal(tnirp
前半部分是一个单行的quine,后跟a #
来形成注释,以将前半部分与较简单的后半部分分开。
_='_=%r;print _%%_#"!dlroW ,olleH"tnirp';print _%_#"!dlroW ,olleH"tnirp