रूबी, 158 154 146 128 122 100 बाइट्स
इस उत्तर से प्रेरित ।
eval s=%{$><<(D>198?'BREAKING NEWS: WORLD ENDS':'eval s=%%{%s}<<D=%d'%[s[0..-2],D<2?100:D+1])#}<<D=1
संपादित करें: मैं इसे हटाने (s.split(35.chr)[0]+35.chr).inspectऔर इसे प्रतिस्थापित करने में सक्षम था s[0..-2](हर मूल्य की सीमा को छोड़कर) और %{ ... }पहले मैंने जो स्ट्रिंग सिंटैक्स का उपयोग किया था। 22 बाइट्स बचाए!
पुराना संस्करण:
संपादित करें: "BREAKING NEWS: WORLD ENDS"एक पूरी तरह से वैध प्रारूप स्ट्रिंग है, और रूबी किसी भी extraneos मापदंडों की उपेक्षा करता है कि एहसास द्वारा parens (और डेटा अनुभाग में इसी जोड़ी) की एक जोड़ी को बचाया ।
END{$><<(q=S>198?"BREAKING NEWS: WORLD ENDS":%{END{$><<(q=S>198?"BREAKING NEWS: WORLD ENDS":%%{%s})%%[q,S<2?0:S-99]}
S=1%02d})%[q,S<2?0:S-99]}
S=1
जब ऐसा मैंने महसूस किया कि जब से नंबर शुरू करने है कार्यक्रम के अंत में जाने के लिए, और गहरे लाल रंग का वैरिएबल का उपयोग कर इससे पहले कि वे घोषित किया गया है की अनुमति नहीं है, मैं कोड को चलाने के लिए होता है के बाद अंक किसी भी तरह। मैं कुछ ऐसा कर सकता था def a(s) ... end;a 1जो बन जाएगा ...end;a 100, हालांकि रूबी के कम-ज्ञात ENDसिंटैक्स का उपयोग कम बाइट्स का उपयोग करता है। हालांकि, अंदर ENDका ब्लॉक एक अलग दायरे में है, इसलिए Sएक वैश्विक चर या स्थिर होना चाहिए।
स्पष्टीकरण:
END{ ... };S=1: प्रोग्राम समाप्त होने से ठीक पहले कोड का रन ब्लॉक; सेट लगातार Sकरने के लिए 1(या 100- 199भविष्य पुनरावृत्तियों में)
$><<( ... ): $>स्टडआउट के लिए रूबी में एक शॉर्टकट है, और <<एक IO IO को लिखता है। परगनों की आवश्यकता होती है, अन्यथा यह बन जाता है($><<S)>198...
S>198?"BREAKING NEWS: WORLD ENDS":(q=...)%[q,S<2?0:S-99]: अगर मैं इसे थोड़ा और उचित कोड में तोड़ता तो यह होता:
if S > 198
"BREAKING NEWS: WORLD ENDS"
else
q = ...
number_to_append = if S < 2
0
else
S - 100 + 1
end
q % [q, number_to_append]
end
%ऑपरेटर एक स्ट्रिंग के लिए लागू प्रभावी ढंग से है printfएलएचएस प्रारूप स्ट्रिंग जा रहा है और आरएचएस तर्क होने के साथ।
%{ ... (q=%%{%s}) ... S=1%02d}: माणिक के पास तार के लिए एक दिलचस्प वाक्यविन्यास है जो घुंघराले ब्रैकेट के जोड़े को स्ट्रिंग के भीतर दिखाई देने की अनुमति देता है, जब तक कि वे संतुलित न हों। यह बहुत मददगार है, क्योंकि अन्यथा एक समान रानी को स्ट्रिंग शाब्दिक के रूप में इसे डालने के लिए स्ट्रिंग से बचना होगा। प्रारूप स्ट्रिंग में दो प्रतिस्थापन %sएक नियमित स्ट्रिंग के लिए और %02dवर्ण के साथ 2 के आकार के लिए दाएं-गद्देदार संख्या के लिए हैं 0।
आगे छोटा करने पर मेरे विचार:
इसके sबजाय इसका उपयोग करने में सक्षम होना अच्छा होगा $s, लेकिन एस को परिभाषित करना s=$s;या एक फ़ंक्शन बनाना def a(s) ...दोनों ही अधिक बाइट्स का उपयोग करते हैं जो वे बचाते हैं, और मैं इसे करने के लिए किसी अन्य तरीके के बारे में नहीं सोच सकता। संपादित करें: निरंतरता वैश्विक है और एक चरित्र हो सकता है!
- यदि
Sयह हमेशा कम होता 100, तो अच्छा होता , ताकि इसकी तुलना 3-अंकीय संख्याओं के बजाय 2-अंकीय संख्याओं के उपयोग से की जा सके। हालांकि, अगर मैं का उपयोग S=0अंत में, अगले दो अंक अष्टाधारी के रूप में व्याख्या कर रहे हैं, और 8और 9अमान्य हैं और सभी चारपाई है। S=बस मान्य नहीं है, और मुझे दो अंकों को जोड़ने से पहले और बाद में दोनों को मान्य करने का कोई अन्य तरीका नहीं पता है। ध्यान दें, 0(और हर दूसरे पूर्णांक) माणिक में सत्य है।
इसे कम करने के बारे में कोई विचार, कृपया मुझे बताएं!
इसे ऑनलाइन आज़माएं!
2Kparanoia: yes97उत्पादन करते हैं2Kparanoia: yes98, इसलिए (4) नहीं पढ़ा जाना चाहिएRepeat to step 100, but step 101 will output "BREAKING NEWS: WORLD ENDS"? (यानी2Kparanoia: yes99खबर का उत्पादन करता है)