एक निश्चित राशि से सभी वर्णों को कम करें और लूप में प्रिंट करने से पहले सही जोड़ें
हैलो वर्ल्ड चैलेंज के लिए अपने जवाब में इसी तरह के दृष्टिकोण का उपयोग करने वाले @LukStorms को क्रेडिट ।
( STN
क्रमशः स्पेस, टैब और न्यू-लाइन के लिए उपयोग किया जाता है।)
अक्षरों के लिए मानों को धक्का देना हमेशा 11 बाइट्स होता है (अर्थात 'A' अक्षर के लिए मान 65 को SSSTSSSSSTN
धकेलना, चरित्र 'z' के लिए मान 122 को धक्का देना SSSTTTTSTSN
) है। जब आप बड़ी मात्रा में पाठ का उत्पादन करना चाहते हैं तो यह महंगा हो सकता है। इसके बजाय, आप उन सभी पात्रों के मूल्यों को कम कर सकते हैं जिन्हें आप एक निश्चित राशि से प्रिंट करना चाहते हैं, और फिर उन्हें मुद्रित करने के लिए लूप में इस निश्चित राशि को जोड़ते हैं।
यह निम्नलिखित कोड के साथ किया जा सकता है (मान लें कि इस मामले में निश्चित मूल्य 100 है):
- वर्णों के लिए सभी मानों को दबाएं (रिवर्स निश्चित मात्रा में 100) रिवर्स ऑर्डर में
NSSN
(एक लेबल_0 बनाएँ; मूल रूप से लूप शुरू करना)
SSSTTSSTSSN
(निर्धारित राशि को 100 पर पुश करें)
TSSS
(स्टैक के शीर्ष दो मानों को एक साथ जोड़ें)
TNSS
(पॉप और चरित्र के रूप में अब सही मूल्य प्रिंट)
NSNN
(लेबल_0 पर जाएं) लूप के अगले पुनरावृत्ति पर जाएं)
यह प्रोग्राम को एक त्रुटि के साथ बंद कर देगा ( जो कि मेटा के अनुसार अनुमति दी गई है ) जैसे ही यह TSSS
स्टैक पर अधिक कुछ नहीं के साथ ऐड ( ) करने की कोशिश करता है । मैंने इसका उपयोग मेरे इस उत्तर को देखने के लिए किया है (देखें बाइट-काउंट को कम करने के लिए मैंने जिन 5 और 6 चीजों को किया है )।
क्या 100 की एक निश्चित राशि सबसे छोटा तरीका है, इस बात पर निर्भर करता है कि आप क्या छाप रहे हैं। उदाहरण के लिए @LukStorm ने अपने हैलो वर्ल्ड उत्तर में 107 का उपयोग किया।
ध्यान दें कि शीर्ष मूल्य (कॉपी करने SNS
) एक ही आसन्न पात्रों में से दो के लिए (जैसे l
में Hello
), या किसी अन्य स्थिति से कॉपी मूल्यों अभी भी इसके अलावा में यह करने के लिए गोल्फ से अधिक इस्तेमाल किया जा सकता बाइट्स।