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に等しくない場合、その数が今回よりも1つ多くインクリメントされたプログラムが出力されます。2017に等しい場合(つまり、1984回インクリメントされた場合)、単に2017をプッシュして終了します。最初の番号は33(コードの長さ)から始まります。インクリメントするたびにコード長が1増加し、その数が1増加するため、33が2017になるまで十分にインクリメントされると、コードも2017バイト長になります。
;;;
許可されたようなNOPを追加するだけですか?