CJam , 6 बाइट्स (पूरा कार्यक्रम) / 7 बाइट्स (कोड ब्लॉक)
q),^W=
इसे ऑनलाइन आज़माएं!
यह एक पूर्ण सीजेएम प्रोग्राम है जो मानक इनपुट से इनपुट स्ट्रिंग को पढ़ता है और लापता पत्र को मानक आउटपुट पर प्रिंट करता है। CJam के पास वास्तव में "विधियाँ" नहीं हैं, जो कि चुनौती के लिए पूछती है, लेकिन निकटतम चीज़ संभवतः एक निष्पादन योग्य कोड ब्लॉक होगी, जैसे:
{),^W=}
इसे ऑनलाइन आज़माएं!
यह कोड ब्लॉक, जब मूल्यांकन किया जाता है, तो इनपुट को स्टैक पर स्ट्रिंग (यानी वर्णों की एक सरणी) के रूप में लिया जाता है, और लापता चरित्र को भी स्टैक पर लौटाता है।
स्पष्टीकरण: पूर्ण कार्यक्रम में, q
इनपुट स्ट्रिंग को पढ़ता है और इसे स्टैक पर रखता है। )
फिर इनपुट स्ट्रिंग के अंतिम वर्ण को पॉप करता है, और रेंज ऑपरेटर ,
इसे एक सरणी में बदल देता है जिसमें सभी वर्ण होते हैं जिनके नीचे कोड बिंदु होते हैं (वर्णमाला में इसके पहले के सभी अक्षर सहित)। इस प्रकार, उदाहरण के लिए, यदि इनपुट था cdfgh
, तो ),
स्टैक के बाद स्ट्रिंग्स शामिल होंगे cdfg
(यानी हटाए गए अंतिम अक्षर के साथ इनपुट) और ...abcdefg
, जहां ...
नीचे ASCII कोड वाले वर्णों का एक समूह है a
(यानी हटाए गए अंतिम इनपुट के नीचे सभी वर्ण) पत्र)।
सममित सेट अंतर ऑपरेटर ^
तब इन तारों को एक ही तार में जोड़ता है जिसमें बिल्कुल वही अक्षर होते हैं जो एक तार में दिखाई देते हैं, लेकिन दोनों में नहीं। यह उस क्रम को संरक्षित करता है जिसमें अक्षर तार में दिखाई देते हैं, इसलिए उदाहरण इनपुट के लिए cdfg
, परिणाम के बाद ),^
होगा ...abe
, जहां ...
फिर से नीचे ASCII कोड के साथ वर्णों का एक गुच्छा होता है a
। अंत में, W=
बस इस स्ट्रिंग के अंतिम चरित्र को निकालता है, जो वास्तव में गायब चरित्र है e
जिसे हम ढूंढना चाहते थे (और बाकी को छोड़ देता है)। जब कार्यक्रम समाप्त होता है, सीजेएम दुभाषिया स्पष्ट रूप से स्टैक की सामग्री को प्रिंट करता है।
बोनस: GolfScript , 6 बाइट्स (पूरा कार्यक्रम)
),^-1>
इसे ऑनलाइन आज़माएं!
यह पता चला है कि लगभग समान कोड भी गोल्फस्क्रिप्ट में काम करता है। हम गोल्फस्क्रिप्ट के निहित इनपुट के कारण पूर्ण प्रोग्राम संस्करण में एक बाइट बचाते हैं, लेकिन एक बाइट खो देते हैं, क्योंकि सीजैम के विपरीत W
, गोल्फस्क्रिप्ट में -1 के लिए एक एकल एकल अक्षर चर नहीं है।
इसके अलावा, CJam में अलग-अलग पूर्णांक और चरित्र प्रकार हैं (और तार केवल वर्ण युक्त सरणियाँ हैं), जबकि गोल्फस्क्रिप्ट में केवल एक पूर्णांक प्रकार है (और एक विशेष स्ट्रिंग प्रकार है जो सामान्य सरणियों से कुछ अलग व्यवहार करता है)। इन सबका परिणाम यह है कि, अगर हम चाहते हैं कि गोल्फस्क्रिप्ट दुभाषिया अपने ASCII कोड संख्या के बजाय वास्तविक लापता पत्र का प्रिंट आउट ले, तो हमें केवल चरित्र के बजाय एकल-वर्ण स्ट्रिंग को वापस करने की आवश्यकता है। सौभाग्य से, यहाँ उस बदलाव को बनाने के लिए बस अनुक्रमणिका ऑपरेटर =
को सरणी / स्ट्रिंग बायीं ट्रंकेशन ऑपरेटर के साथ बदलने की आवश्यकता है >
।
बेशक, GolfScript के निहित I / O के लिए धन्यवाद, ऊपर दिए गए कोड को एक स्निपेट के रूप में भी इस्तेमाल किया जा सकता है जो स्टैक से एक स्ट्रिंग पढ़ता है और एक एकल-वर्ण स्ट्रिंग देता है जिसमें लापता अक्षर होता है। या, बल्कि, कोई भी स्निपेट जो एक तर्क के रूप में स्टैक पर एक एकल स्ट्रिंग लेता है, और स्टैक पर एक प्रिंट करने योग्य स्ट्रिंग के रूप में अपना आउटपुट देता है, एक पूर्ण गोल्फस्क्रिप्ट प्रोग्राम भी है।