CJam,39 33 30字节
33q:X~
与输入
2017:N=N{33')X+`":X~"+}?
在线尝试!
这在功能上与我的先前版本等效,除了它避免了编写和转义引号的需要。以前的版本:
33"2017:N=N{33')X+`\":X~\"+}?":X~
哪个输出
33")2017:N=N{33')X+`\":X~\"+}?":X~
哪个输出
33"))2017:N=N{33')X+`\":X~\"+}?":X~
等等。最后,程序
33"))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))2017:N=N{33')X+`\":X~\"+}?":X~
输出2017
。
怎么运行的
33 Push 33
q Read the input: 2017:N=N{33')X+`":X~"+}?
:X Store it in variable X
~ Eval it
但是输入中的代码实际上是做什么的?
2017:N Push 2017 and store it in N
= Check if the other number (33 on first run) equals 2017
N If it does, push 2017
{ Else, execute this block:
33 Push 33
') Push the ) character
X Push X
+ Concatenate with ')
` String representation (wraps it in quotes, escapes quotes inside)
":X~" Push the string ":X~"
+ Concatenate
}? (end of block)
如果该程序的第一个数字不等于2017,则它将输出一个程序,该程序中该数字的递增时间比本次多。如果它等于2017(即已增加1984倍),则只需按2017并终止。第一个数字以33(代码长度)开头;每次增加都会将代码长度增加1,并将该数字增加1,因此,当33增加到足以变为2017时,代码也将为2017字节长。
;;;
允许的NOP 吗?