Groovy quine!它是如何工作的?

时间:2011-06-08 12:44:26

标签: groovy

Quine是一个自我复制的代码。例如,如果groovy中的代码如下所示:

def s = 20

当我运行上面的代码时,我应该将程序语句作为输出。所以上面的代码应该产生:

def s = 20 //as this is my input..

正如我在Groovy Console中看到的那样,我开始了解常规支持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

但我不知道它是如何运作的!任何人都可以说我,上面链接中的代码是如何工作的?

提前致谢!

1 个答案:

答案 0 :(得分:5)

有问题的代码是:

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

因此,左边的语句定义了一个字符串,然后右边的语句将字符串的不同位加在一起:

如果我们添加以下内容以打印出它正在做的事情:

println s[0..1]
println s[3]
println s[0..1]
println s[2] * 6
println s[3..-1] * 2

我们得到输出:

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

如果你把所有这些字符串加在一起,就会得到原始程序。