7 , 31 अक्षर, स्कोर 30, सुरक्षित लेकिन संभवतः टूट गया?
एक 7 प्रोग्राम आम तौर पर सिर्फ एक संख्या है, लेकिन इसमें व्हॉट्सएप हो सकता है, इसे कई संख्याओं में विभाजित किया जा सकता है। इस सबमिशन में दो नंबर होते हैं (जो कि 7 इंटरप्रेटर द्वारा संक्षेप में लिखे गए हैं), और इसी तरह प्रोग्राम दो नंबर इनपुट के रूप में लेता है, मानक इनपुट के माध्यम से। (हेडर में "31 वर्ण" दो नंबरों की कुल लंबाई है, साथ ही एक व्हाट्सएप वर्णों को अलग करने वाला अंक, जो अंक बनाते हैं जो एक प्रोग्राम के रूप में उपयोग किए जाने पर ऑक्टल के रूप में व्याख्या किए जाते हैं, लेकिन इनपुट के रूप में उपयोग किए जाने पर दशमलव; यह अंक हैं जो दो मामलों में समान हैं, वास्तविक संख्या नहीं हैं। ध्यान दें कि यह अप्रासंगिक है जब या तो एक कार्यक्रम के रूप में माना जाता है, या जब एक इनपुट के रूप में माना जाता है, चाहे आप उन्हें एक स्थान या एक नई रेखा के साथ अलग करते हैं, मुझे आशा है कि doesn 'सबमिशन अमान्य नहीं है।)
अपेक्षित आउटपुट निम्न संख्या है (दशमलव में यहां व्यक्त किया गया है, क्योंकि यह आउटपुट प्रारूप है जो 7 इंटरप्रेटर का उपयोग करता है):
238363505302130098723162537059
ध्यान दें कि Esolang wiki से जुड़े 7 दुभाषिया आंतरिक रूप से संख्याओं को एकात्मक रूप में संग्रहीत करते हैं, जिसका अर्थ है कि आपके पास वास्तव में कार्यक्रम चलाने के लिए पर्याप्त मेमोरी होने की संभावना नहीं है कि वह क्या करता है। मैंने अपने व्यवहार को मैन्युअल रूप से काम करने के माध्यम से कार्यक्रम को सत्यापित किया, और यह सत्यापित करने के लिए कि मैंने यह करने की अपेक्षा की थी, छोटे इनपुट पर परीक्षण किया। एक वैकल्पिक दृष्टिकोण एक दुभाषिया लिखना होगा जो संख्याओं के अधिक कुशल तरीके का उपयोग करता है।
यहाँ दरार से बचने के लिए कुछ दर्द था, लेकिन मैं अब पूरी तरह से संतुष्ट हूं कि कार्यक्रम में स्वयं के अलावा कोई भी दो नंबर 238363505302130098723162537059 उत्पादन के रूप में उत्पादन करने में सक्षम है। ( EDIT 1 सप्ताह बाद: मैं गलत हो सकता हूं, इस बात पर निर्भर करता है कि आप प्रश्न की व्याख्या कैसे करते हैं। नीचे देखें। )
समाधान
मूल कार्यक्रम था:
711170237403706
111723603700633
यह प्रोग्राम दो नंबर एक्स और y लेता है , और अभिव्यक्ति के परिणाम की गणना करता है 3 एक्स वाई- y- २ (यानी y( 3 x - 1 ) - 2 )। यदि हम x = 711170237403706 और y= 111723603700633 पर यह गणना करते हैं , तो हमें आवश्यकतानुसार 238363505302130098723162537059 परिणाम प्राप्त होते हैं ।
यह इरादा था कि कोई अन्य इनपुट वांछित परिणाम नहीं देगा क्योंकि:
इनपुट को इस तरह चुना जाना चाहिए कि y( 3 x - 1 ) - 2 = 238363505302130098723162537059 , यानी y( 3 x - 1 ) = 238363505302130098723162537061 (दोनों ओर 2 जोड़कर)। यह संख्या एक अर्धवृत्त है, जिसमें केवल दो कारक हैं: 111723603700633 और 2133510712211117 । केवल इन नंबरों में से एक, 2133510712211117 , रूप में व्यक्त किया जा सकता है 3 एक्स - 1 (दे रही है ( 3 × 711170237403706 ) - 1 = 2133510712211117 )। तो हम विशिष्ट रूप से पहचान सकते हैं कि कौन सी संख्याएक्स और कौन सीy , जिसका अर्थ है कि केवल एक इनपुट काम करता है।
हालाँकि, आप प्रश्न की व्याख्या कैसे करते हैं, इस पर निर्भर करते हुए, एक दूसरा इनपुट हो सकता है जो वांछित आउटपुट उत्पन्न करता है (इस प्रकार इस समाधान को अमान्य कर रहा है):
दुर्भाग्य से, एक अर्धवृत्ताकार के दो गुणक विभाजन दो कारकों में होते हैं: एक इसे दो प्रमुख कारकों में विभाजित करना है, लेकिन दूसरा तुच्छ विभाजन है जिसमें 1 और संख्या स्वयं शामिल हैं। 1 को पूर्णांक x के साथ प्रपत्र 3 एक्स - 1 में नहीं लिखा जा सकता है , लेकिन वांछित आउटपुट हो सकता है; इस प्रकार एक संभावित मेटा-क्रैक में 79454501767376699574387512354 और 1 के रूप में इनपुट देना शामिल है । हालांकि, यहां पहली संख्या में वर्ण ( 8 और 9) शामिल हैंएक्स79454501767376699574387512354189) जो 7 कार्यक्रमों के लिए निर्धारित चरित्र में नहीं हैं। इसलिए यदि इनपुट कार्यक्रम के रूप में एक ही वर्ण सेट में प्रतिबंधित है, तो यह समाधान मान्य है; लेकिन यदि प्रोग्राम के कैरेक्टर सेट के बाहर से वर्णों की इनपुट की अनुमति है, तो यह समाधान अमान्य है।
व्याख्या
यहां बताया गया है कि इच्छित समाधान कैसे कार्य करता है:
711170237403706 111723603700633
7 7 7 स्टैक तत्व विभाजक
111 023 403706 111723603700633 प्रारंभिक स्टैक तत्व
111 नंबर 3, एकतरफा में
"इनपुट नंबर" के लिए 023 I / O DSL
403706 111723603700633 मुख्य कार्यक्रम
(निहित: मुख्य कार्यक्रम तत्व की एक प्रति निष्पादित करें , मूल को संरक्षित करें)
४० स्वैप {०२३} ऊपर {कार्यक्रम}, इससे बचकर
3 क्या मैं / ओ {023} का उपयोग कर रहा हूं; पॉप {कार्यक्रम}
0 I / O: संख्यात्मक
23 कई बार {111} कॉपी करते हुए एक नंबर इनपुट करें
706 संख्या में "6" जोड़ें (इसे घटाकर)
11 दो खाली स्टैक तत्वों को धक्का दें
17236 स्टैक तत्व को "23" पुश करें (अनसैप्ड)
0 बच {23}, एक खाली तत्व का सेवन
3 क्या मैं / ओ {23} का उपयोग कर रहा हूं; पॉप {नीचे तत्व}
23 ढेर इनपुट के शीर्ष को कई बार कॉपी करें
7006 "66" जोड़ें (यानी 2 घटाएँ)
3 आउटपुट {एक संख्या के रूप में}
3 कार्यक्रम से बाहर निकलें (कम स्टैक के कारण)
1
7
0
6
66
12345
3123451234512345