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 จะมีการส่งออกโปรแกรมที่จำนวนนั้นเพิ่มขึ้นหนึ่งครั้งมากกว่าครั้งนี้ ถ้ามันเท่ากับปี 2560 (นั่นคือเพิ่มขึ้น 1984 ครั้ง) ให้กด 2017 และยุติ หมายเลขแรกเริ่มต้นที่ 33 (ความยาวของรหัส); การเพิ่มขึ้นทุกครั้งจะเพิ่มความยาวรหัส 1 และตัวเลขนั้นเพิ่มขึ้น 1 ดังนั้นเมื่อ 33 เพิ่มขึ้นพอที่จะกลายเป็น 2017 รหัสก็จะมีความยาว 2017 ไบต์
;;;
อนุญาตหรือไม่