7 , 23 अक्षर, 9 बाइट्स
54340045141332401057403
इसे ऑनलाइन आज़माएं!
यह एक ऐसी भाषा में एक कठिन चुनौती है जिसमें पूरी तरह से अंक होते हैं, लेकिन मैंने इसे प्रबंधित किया ...
यह 7 एन्कोडिंग में सिर्फ 9 बाइट्स है। (सख्ती से बोलते हुए, यह 8⅜ बाइट्स है (23 × ¼ - final क्योंकि अंतिम दो अनुगामी 1 बिट्स छोड़ा जा सकता है), लेकिन पहली बार, पीपीसीजी की पूरी संख्या में बाइट्स की आवश्यकता के लिए राउंड अप करना वास्तव में एक फायदा है क्योंकि इसका मतलब है कि अतिरिक्त अनुगामी 1 बिट आवश्यक हैं और इस प्रकार प्रश्न पर प्रतिबंध नहीं लगाया जाता है।) एक प्रतिवर्ती हेक्स डंप:
00000000: b1c0 2530 b6a0 22f8 1f ..%0.."..
7 में इस कार्यक्रम को लिखने की मुख्य चुनौती इसे 10 बाइट्स के तहत नियंत्रित करना था (जैसा कि 7 का उपयोग किए बिना लिखना 0
या 1
बहुत कठिन है।) यह मानक "हैलो वर्ल्ड" कार्यक्रम के समान संरचना का उपयोग करता है:
5434004514133240105 7 403
5434004514133240105 डेटा स्पेस के लिए 0-5 परिशिष्टों को कमांड करता है
7 डेटा स्पेस का एक नया सेक्शन शुरू करें
403 एक अन्य शाब्दिक डेटा स्थान के लिए संलग्न है
{निहित: अंतिम खंड को कमांड के रूप में स्पष्ट करें}
4 स्वैप 1 और 2 खंडों के बीच एक खाली खंड 6 के बीच
उन आदेशों का पुनर्निर्माण करता है जो 1 खंड 3 आउटपुट बनाते हैं (+ कुछ अन्य प्रभाव जिनकी
हमें परवाह नहीं है)
दूसरे शब्दों में, हम डेटा स्पेस के दो सेक्शन बनाकर शुरू करते हैं; हमारे पास दो शाब्दिक हैं, जिनमें से प्रत्येक वहां आदेशों के अनुक्रम को आगे बढ़ाता है। दूसरा खंड (वे स्टैक-स्टाइल को पुश किया जाता है इसलिए पहला धक्का = अंतिम पॉप) कमांड का एक बहुत ही मनमाना अनुक्रम है, लेकिन कमांड अनुक्रम का उपयोग करके धक्का दिया जाता है 5434004514133240105
(इस प्रकार डेटा अनुक्रम का उत्पादन होता है 5434664574733246765
; जब पाठ में 7 पर चर्चा होती है, तो मैं सामान्य रूप से सामान्य फ़ॉन्ट का उपयोग करता हूं; एक कमांड के लिए जो एक शाब्दिक धक्का देता है, और इसके परिणामस्वरूप शाब्दिक के लिए बोल्ड)। पहला खंड कमांड अनुक्रम का उपयोग करके धक्का दिया जाता है 403
, उत्पादन करता है 463
। फिर पहले खंड को प्रोग्राम में वापस कॉपी किया जाता है (7 का निहित व्यवहार)।
463
अब (बोल्ड) आदेशों तुरंत कुछ करते हैं, (गैर बोल्ड) आदेशों के बजाय कि सिर्फ शाब्दिक धक्का से बना है। 4
पहले खंड में हमारे "स्ट्रिंग शाब्दिक" प्राप्त करने के लिए वर्गों को पुनर्व्यवस्थित करता है। फिर 0
ऑपरेशन जो 7 के लिए सबसे अधिक जाना जाता है: डेटा स्पेस के एक सेक्शन को ले रहा है, और कमांड अनुक्रम को फिर से संगठित करता है जो इसे बनाने की सबसे अधिक संभावना है। उस मामले में जहां मूल कमांड अनुक्रम सभी था 0
- 5
यह 100% सटीक है (अनिश्चित रूप से, जैसा कि उन कमांड शुद्ध रूप से डेटा को धक्का देते हैं और इस प्रकार उन्होंने क्या किया इसका स्पष्ट प्रमाण छोड़ते हैं), और इसलिए हम अपना मूल अनुक्रम 5434004514133240105
वापस प्राप्त करते हैं । अंत में, 3
इसे प्रिंट करता है।
तो यहाँ देखने वाली शेष बात स्ट्रिंग की एन्कोडिंग है। इसकी अपनी डोमेन-विशिष्ट भाषा है:
5434004514133240105
5 change encoding: 6 bits per character
43 select character set: digits and common symbols
40 '9'
04 space
51 select character set: uppercase letters
4133240105 'B' 'Y' 'T' 'E' 'S'
(कोई "सिलेक्टेड कैरेक्टर सेट: लोअरकेस लेटर्स" "डिजिट्स और कॉमन सिंबल" कैरेक्टर सेट में नहीं है - आपको पहले एक अलग कैरेक्टर सेट से गुजरना होगा - इसलिए मुझे गोल्फ के लिए अपरकेस का उपयोग करने की जरूरत है, जो इस प्रभावी 10 से नीचे फिट होने के लिए पर्याप्त है -तब सीमा।)