奎因是一种自我复制的代码.例如,如果groovy中的代码如下所示:
def s = 20
Run Code Online (Sandbox Code Playgroud)
当我运行上面的代码时,我应该将程序语句作为我的输出.所以上面的代码应该产生:
def s = 20 //as this is my input..
Run Code Online (Sandbox Code Playgroud)
正如我在Groovy Console中看到的,我开始知道groovy支持Quine:
s='s=\\\';s[0..1]+s[3]+s[0..1]+s[2]*6+s[3..-1]*2';s[0..1]+s[3]+s[0..1]+s[2]*6+s[3..-1]*2
Run Code Online (Sandbox Code Playgroud)
但我不知道它是如何工作的!可以有人说我,上面链接中的代码如何工作?
提前致谢!
有问题的代码是:
s='s=\\\';s[0..1]+s[3]+s[0..1]+s[2]*6+s[3..-1]*2';s[0..1]+s[3]+s[0..1]+s[2]*6+s[3..-1]*2
Run Code Online (Sandbox Code Playgroud)
所以,左边的语句定义了一个字符串,然后右边的语句将字符串的不同位加在一起:
如果我们添加以下内容以打印出它正在做的事情:
println s[0..1]
println s[3]
println s[0..1]
println s[2] * 6
println s[3..-1] * 2
Run Code Online (Sandbox Code Playgroud)
我们得到输出:
s=
'
s=
\\\
';s[0..1]+s[3]+s[0..1]+s[2]*6+s[3..-1]*2';s[0..1]+s[3]+s[0..1]+s[2]*6+s[3..-1]*2
Run Code Online (Sandbox Code Playgroud)
如果将所有这些字符串添加到一起,您将获得原始程序.
| 归档时间: |
|
| 查看次数: |
195 次 |
| 最近记录: |