एक अवैध स्ट्रिंग का पता लगाएं


81

चुनौती पात्रों की एक स्ट्रिंग को खोजने की है जो आपकी पसंद की प्रोग्रामिंग भाषा में किसी भी कानूनी कार्यक्रम में दिखाई नहीं दे सकती है । जिसमें टिप्पणी, तार या अन्य "गैर-निष्पादन योग्य" भाग शामिल हैं।

चुनौती

  • आपका कार्यक्रम किसी विशेष संस्करण या आपकी भाषा के संकलक / दुभाषिया / रनटाइम वातावरण के कार्यान्वयन के लिए विशिष्ट हो सकता है। यदि हां, तो कृपया विवरण निर्दिष्ट करें।
  • केवल मानक संकलक / दुभाषिया / रनटाइम विकल्प की अनुमति है। आप एक विशिष्ट परिणाम प्राप्त करने के लिए अपने कंपाइलर के लिए कुछ अजीब ध्वज पारित नहीं कर सकते हैं (उदाहरण के लिए एक ध्वज को त्रुटियों में परिवर्तित करने के लिए पास करना)।
  • यदि आपकी प्रोग्रामिंग भाषा के लिए एक विशिष्ट एन्कोडिंग की आवश्यकता होती है (उदाहरण के लिए UTF-8), तो आपके स्ट्रिंग को सही ढंग से एन्कोडेड भी किया जाना चाहिए (अर्थात स्ट्रिंग्स जो केवल डिकोडिंग के कारण विफल हो जाते हैं, उन्हें अनुमति नहीं है)।
  • आपके प्रस्तुतिकरण में प्रत्येक व्यक्तिगत चरित्र को एक कानूनी कार्यक्रम में स्वीकार्य होना चाहिए; वह यह है कि, आप केवल एक चरित्र का उपयोग नहीं कर सकते, जो हमेशा खारिज हो जाता है।
  • कंपाइलर / दुभाषिया / रनटाइम को किसी भी स्रोत कोड को दिए जाने पर एक त्रुटि देनी चाहिए जिसमें आपके स्ट्रिंग में एक विकल्प के रूप में शामिल है। प्रोग्राम के दौरान त्रुटि समान नहीं होती है - आपके स्ट्रिंग का एक एम्बेडिंग सिंटैक्स त्रुटि का कारण हो सकता है, जबकि दूसरा रनटाइम त्रुटि का कारण हो सकता है।

स्कोरिंग

  • प्रत्येक भाषा के लिए सबसे छोटी अवैध स्ट्रिंग जीतती है।
  • आपको यह बताना चाहिए कि आपका स्ट्रिंग अवैध क्यों है (कानूनी कार्यक्रम में यह कहीं भी दिखाई नहीं दे सकता है)।
  • टिप्पणियों में गलत समाधान विवादित करें। अधिक विशेष रूप से, आपको TIO या एक कानूनी कार्यक्रम प्रदर्शित करने के बराबर (यानी कि कोई भी त्रुटि उत्पन्न नहीं करता है) के लिए एक लिंक प्रदान करना चाहिए जिसमें प्रस्तावित विकल्प शामिल हैं।
  • कुछ भाषाएं (जैसे बाश, बैच, पर्ल) मनमाने ढंग से द्विआधारी डेटा को वैधता को प्रभावित किए बिना एक कार्यक्रम में जोड़े जाने की अनुमति देती हैं (जैसे __DATA__पर्ल में उपयोग )। ऐसी भाषाओं के लिए, आप एक समाधान प्रस्तुत कर सकते हैं जो केवल ऐसे अनुगामी अनुभाग में दिखाई दे सकता है । अपने उत्तर में उस पर अवश्य ध्यान दें। (इस "अनुगामी अनुभाग" की परिभाषा भाषा-निर्भर है, लेकिन आम तौर पर इसका मतलब है कि पार्सर के बाद किसी भी पाठ ने पूरी तरह से स्क्रिप्ट पढ़ना बंद कर दिया है)।

उदाहरण

अजगर में, मैं जमा कर सकता हूं

x
"""
'''

लेकिन इसे बड़े कार्यक्रम में शामिल किया जा सकता है

"""
x
"""
'''
y
'''

इसलिए यह स्वीकार्य नहीं है।


2
क्या एक प्रति-उदाहरण एसटीडीआईएन से इनपुट पर भरोसा कर सकता है?
जकार्इ

5
क्या यह एक अच्छा CnR बना देगा?
कैलक्यूलेटरफ़्लीन

2
बहुत देर हो चुकी है अब मैं अनुमान लगाता हूं, लेकिन ऐसा लगता है कि यह एक पुलिस और लुटेरे की चुनौती हो सकती है। वैध कार्यक्रमों को बनाने के प्रयासों में बहुत अधिक कौशल है, साथ ही साथ पहली जगह में तार के साथ आना।
user2390246

4
पर्ल के प्रयासों के लिए मेरी संवेदना। :)
कज़

2
मुझे पूरा यकीन है कि यह गैर-साक्षर हास्केल में पूरी तरह से असंभव है, नेस्टेड टिप्पणियों के लिए धन्यवाद।
फफूंद

जवाबों:


57

चेंजलिंग , 2 बाइट्स




वह दो लाइनफीड है। मान्य चेंजलिंग को हमेशा मुद्रण योग्य ASCII वर्णों का एक सही वर्ग बनाना चाहिए, ताकि इसमें एक पंक्ति में दो लाइनफीड न हो।

त्रुटि हमेशा एक पार्सर त्रुटि होती है और हमेशा समान होती है:

This shape is unpleasant.

साथ बाहर निकलें कोड 1

इसे ऑनलाइन आज़माएं!


यह भी 2Col के साथ काम करता है । इसे ऑनलाइन आज़माएं! । लेकिन 2Col में इसका कारण यह है कि प्रत्येक पंक्ति में ठीक 2 वर्णों को समाहित करने की आवश्यकता है, लेकिन खाली रेखा इसे तोड़ती है।
क्रिति लिथोस

2
+1 क्योंकि यह स्वचालित रूप से विजेता है, क्योंकि 1-बाइट समाधानों की अनुमति नहीं है क्योंकि "आप केवल एक चरित्र का उपयोग नहीं कर सकते हैं जो हमेशा खारिज कर दिया जाता है।"
ज़ाचरी जूल

1
@Cowsquack tfw मैं अपनी भाषा के बारे में भूल गया
Skidsdev

1
@ स्किड्सदेव tfw मैं फिर से अपनी भाषा के बारे में भूल गया, और मेरे बारे में भूलकर अपनी भाषा के बारे में भूल गया
स्किड्सदेव

@ Zacharý 0-बाइट समाधान के बारे में क्या?
PyRulez

32

जावा, 4 बाइट्स

;\u;

इसे ऑनलाइन आज़माएं!

यह एक अमान्य यूनिकोड एस्केप सीक्वेंस है और इससे कंपाइलर में त्रुटि होगी।

error: illegal unicode escape

काम नहीं करता है - एक की तरह एक स्ट्रिंग शाब्दिक हो सकता है "\\u;"
फेर्सुम

@ फ़ेर्सम ने एक बाइट की कीमत पर तय किया
क्रिकटी लिथोस

21
@ TheLethalCoder: जावा कुछ भी\uXXXX करने से पहले बचने के लिए सोर्स कोड को प्रीप्रोसेस करता है, इसलिए हां, यह टिप्पणियों के अंदर भी काम करेगा।
nneonneo

3
मुझे लगता है कि यह अभी भी इस साइट के इतिहास में सबसे छोटा जावा उत्तर है ..
मैजिक ऑक्टोपस उर्न

1
@MagicOctopusUrn वास्तव में, यह 0 बाइट्स जावा उत्तर है (जो वर्तमान मेटा में अब और प्रासंगिक नहीं है, क्योंकि यह STDERR के बजाय STDERR को आउटपुट करता है)। हालांकि दोनों बहुत अद्भुत और चतुर हैं। :)
केविन क्रूज़सेन

25

COBOL (GNU) , 8 बाइट्स


THEGAME

सबसे पहले, एक लाइनफीड आपको एक टिप्पणी लाइन में मेरे शब्द डालने से रोकने के लिए।

फिर, ऐतिहासिक रूप से, COBOL कार्यक्रमों को कोडिंग शीट्स पर मुद्रित किया गया था, संकलक 80-वर्ण सीमित रेखाओं पर बहुत निर्भर करता है, कोई बहुभाषी टिप्पणियां नहीं हैं और पहले 6 वर्ण टिप्पणी हैं (अक्सर संपादन योग्य पंक्ति संख्याओं के रूप में उपयोग की जाती हैं), आप लगभग कुछ भी नहीं कर सकते हैं। , AFAIK। मैंने THEGAMअगली पंक्ति की शुरुआत में चुना ।

फिर, किसी भी पंक्ति में 7 वां प्रतीक केवल वर्णों की एक बहुत ही प्रतिबंधित सूची को स्वीकार करता है: अंतरिक्ष (कोई प्रभाव नहीं), तारांकन चिह्न (शेष पंक्ति की टिप्पणियाँ), हाइफ़न, स्लैश, अन्य भी हो सकते हैं, लेकिन निश्चित रूप से नहीं E

उदाहरण के लिए, GnuCobol द्वारा दी गई त्रुटि है:

error: invalid indicator 'E' at column 7

इसे ऑनलाइन आज़माएं!

इसके अलावा, आप सिर्फ खेल खो दिया है।


30
Also, you just lost the game.मैं लगभग नीचे चला गया
स्टीफन

24

जावास्क्रिप्ट, 7 बाइट्स


;*/\u)

अग्रणी नई नोट पर ध्यान दें।

  • \u) एक अमान्य यूनिकोड एस्केप अनुक्रम है और यही कारण है कि यह स्ट्रिंग अमान्य है
  • //शुरुआत में जोड़ना अभी भी अग्रणी नई लाइन के कारण काम नहीं करेगा, दूसरी पंक्ति को अधूरा छोड़कर
  • /*समापन जोड़ने से स्ट्रिंग पूरी तरह से असहज नहीं होगी */जो इसे पूरा करती है, \u)उजागर को छोड़ देती है
  • जैसा कि @tsh द्वारा कहा गया है, नीचे की रेखा को एक /स्ट्रिंग के बाद एक रेगेक्स में बदल दिया जा सकता है , इसलिए )सामने की ओर होने से \u, हम यह सुनिश्चित कर सकते हैं कि रेग्क्स शाब्दिक हमेशा अमान्य होगा
  • बकौल @asgallant, कोई भी 1||1(string)/रेगेक्स का मूल्यांकन करने से बचने के लिए कर सकता है । दूसरी पंक्ति की शुरुआत में अर्ध-बृहदान्त्र रुक जाता है कि 1||1दूसरी पंक्ति को हिट करने से पहले अभिव्यक्ति को समाप्त करने से होता है, इस प्रकार एक वाक्य रचना को मजबूर करता है ;*

कोशिश करो!


2
/* */\u0045 = 3मान्य जावास्क्रिप्ट कोड लगता है।
टीश

2
3 */\u;/अभी भी वैध है।
tsh

3
यह ध्यान रखना दिलचस्प है कि ES2018 (जो इस साल के अंत तक आधिकारिक नहीं होगा) के रूप में आप सिर्फ इस वजह से बैकटिक्स में पूरी बात लपेट सकते हैं । आप शायद इसे ठीक कर सकते हैं, हालांकि /(इसके बाद आपको इसे ठीक करने की आवश्यकता नहीं है) (इसके अलावा, ;खराब रेगेक्स के पार्सिंग को मजबूर नहीं करता है, यह एक सिंटेक्सऑयर को बल देता है *।)
ETHproductions

1
@ लुशेंको लेकिन यह #if 0यहाँ देखे गए अनुसार काम नहीं करता है: इसे ऑनलाइन आज़माएँ!
क्रिकटी लिथोस

3
नए JS संस्करणों में, स्ट्रिंग स्ट्रिंग के साथ String.raw इसे नहीं तोड़ सकता, क्योंकि अमान्य एस्केप विफल हो जाता है। होगा: String.raw`code यहाँ `
iovoid

15

पायथन, 10 बाइट्स (cpython नहीं)


?"""?'''?

अग्रणी नई नोट पर ध्यान दें। न्यूलाइन के कारण टिप्पणी नहीं की जा सकती है, और यदि इस बारे में सही तरीके से सोचा जाए तो ट्रिपल उद्धृत स्ट्रिंग्स का कोई संयोजन काम नहीं करना चाहिए।

टिप्पणियों में @ Faersum लगता है कि विंडोज पर किसी भी cpython प्रोग्राम को पूरी तरह से तोड़ दिया है जहाँ तक मैं एक फ़ाइल की शुरुआत में 0x1A चरित्र को जोड़कर बता सकता हूं। ऐसा लगता है कि शायद (?) यह इस तरह से है क्योंकि यह चरित्र ऑपरेटिंग सिस्टम द्वारा नियंत्रित किया जाता है, जाहिरा तौर पर एक ईओएफ में अनुवादित किया जा रहा है क्योंकि यह कुछ विरासत डीओएस मानक के कारण स्टड से गुजरता है।

एक बहुत ही वास्तविक अर्थ में यह अजगर के साथ नहीं बल्कि ऑपरेटिंग सिस्टम के साथ एक समस्या है। यदि आप एक पायथन स्क्रिप्ट बनाते हैं, जो फ़ाइल को पढ़ती है और उस compileपर बिलिन का उपयोग करती है, तो यह सिंटैक्स त्रुटि को फेंकने का अधिक अपेक्षित व्यवहार देता है। Pypy (जो शायद आंतरिक रूप से सिर्फ यही करता है) भी एक त्रुटि फेंकता है।

संपादित करें:

पायथन दुभाषिया को तोड़ने के अस्पष्ट तरीके खोजने में @ feersum के परिश्रम के कारण, यह उत्तर किसी भी विशिष्ट cpython वातावरण के लिए पूरी तरह से अमान्य है जहाँ तक मैं बता सकता हूँ! (विंडोज और लिनक्स दोनों के लिए पायथन 2 और 3) मुझे अभी भी विश्वास है कि ये दरारें किसी भी प्लेटफ़ॉर्म पर पिपी के लिए काम नहीं करेंगी (केवल अन्य पायथन कार्यान्वयन जिसे मैंने परीक्षण किया है)।


1
"""?'''"""
@officialaimm

3
मैंने इस विकल्प के साथ एक कार्यक्रम बनाया जो मेरी मशीन पर चलता है। हालाँकि, मुझे लगता है कि यह कई दुभाषियों / प्लेटफार्मों / संस्करणों पर नहीं चलता है। क्या आप निर्दिष्ट कर सकते हैं कि पायथन इंटरप्रेटर और ओएस का कौन सा संस्करण इस लक्ष्य को लक्षित कर रहा है?
feersum

1
विंडोज 7 पर पायथन 3 वही होता है, जहां मेरी दरार काम कर रही है। बेस 64-एन्कोडेड प्रोग्राम के
पास्टेबिन

1
मैं यह भी दरार कर सकते हैं। बस फ़ाइल की शुरुआत में एक 0x1A चरित्र डालें, और इसके बाकी सभी को अनदेखा किया जाता है (यह वास्तव में पायथन 3 के लिए भी काम करता है)।
फ़ेर्सुम

1
मुझे पता है कि यह वास्तव में पुराना है, लेकिन पायथन डिस्कॉर्ड में कुछ लोगों के साथ काम करने के बाद, हमें यह दरार मिली , हालांकि मुझे नहीं पता कि एन्कोडिंग को बदलना धोखा माना जा सकता है
EdgyNerd

14

सी (क्लैंग) , 16 बाइट्स

 */
#else
#else

इसे ऑनलाइन आज़माएं!

*/किसी भी /*टिप्पणी को बंद कर देता है , और प्रमुख स्थान सुनिश्चित करता है कि हम सिर्फ एक शुरुआत नहीं करते। न्यूलाइन किसी भी //टिप्पणी को बंद कर देता है और किसी भी स्ट्रिंग शाब्दिक को तोड़ देता है । फिर हम एक त्रुटि #else without #ifया #else after #elseत्रुटि का कारण (चाहे #if 0हम कितने भी अंदर हों)।



2
इसके अलावा, C ++ 11 कच्चे तार काम करने लगते हैं, gcc के साथ एक समाधान असंभव है।
feersum

@ Faersum Huh, TIL कि GCC उन C कोड को स्वीकार करता है। मैं निर्दिष्ट कर सकता हूं -std=c99, लेकिन चलो क्लैंग में स्विच करने का प्रयास करें।
एंडर्स कासोर्ग

3
मैं वास्तव में हैरान हूं कि जीसीसी सी ++ 11 कच्चे तारों को स्वीकार करता है। संकलक संस्करण या कार्यान्वयन को निर्दिष्ट करना पूरी तरह से ठीक है, इसलिए यदि यह क्लैंग में अवैध है, तो यह उचित खेल है।
nnonneo

1
@ l4m2 मैं आपके प्रश्न को पार्स नहीं कर सकता (वे कौन हैं, और आपका फिर से क्या मतलब है?), लेकिन ध्यान दें कि एक C ++ कच्चे स्ट्रिंग शाब्दिक एक कस्टम डेलीमीटर का समर्थन करता है: R"foobar(...)foobar"और केवल एक सही पैरेन का पालन करता है जो मेल्टीमीटर और ए के बाद होता है बोली इसे बंद कर देंगे।
एंडर्स कासोर्ग

11

अजगर, 6 बाइट्स

¡¡$¡"¡

¡एक गैर-कार्यान्वित वर्ण है, जिसका अर्थ है कि यदि पाइथ पार्सर कभी भी इसका मूल्यांकन करता है, तो यह पायर्थपैरसेर्र के साथ त्रुटि करेगा। कोड सुनिश्चित करता है कि यह किसी एक पर होगा ¡

तीन तरीके हैं एक बाइट एक पायथ कार्यक्रम में मौजूद हो सकता है, और पार्स नहीं किया जा सकता है: एक स्ट्रिंग शाब्दिक ( "या .", जो समान रूप से पार्स किया जाता है) में, पायथन शाब्दिक ( $) में और तुरंत बाद \

यह कोड \त्रुटि के बिना मूल्यांकन करने से रोकता है, क्योंकि यह केवल निम्नलिखित बाइट और दूसरी ¡त्रुटियों को प्रभावित करता है ।

$$सीधे संकलित पायथन कोड में s के भीतर कोड एम्बेड करता है । मैं इस बारे में कोई धारणा नहीं बनाता कि वहां क्या हो सकता है।

यदि यह प्रोग्राम किसी $संदर्भ में इस कोड तक पहुंचता है, तो यह समाप्त हो जाएगा $, और इसके ¡ठीक बाद यह पार्सर त्रुटि करेगा। Python Python के शाब्दिक शब्द हमेशा आगे ही खत्म होते हैं $, इसके बावजूद कि Python कोड क्या कर सकता है।

यदि प्रोग्राम एक "संदर्भ में शुरू होता है , "तो स्ट्रिंग को समाप्त कर देगा, और अंतिम ¡पार्सर को त्रुटि देगा।


11

एडीए - 2 बाइट्स

मुझे लगता है कि यह काम करना चाहिए:


_

यह newline- अंडरस्कोर है। न्यूलाइन टिप्पणियों को समाप्त करता है और एक स्ट्रिंग में अनुमति नहीं है। एक अंडरस्कोर व्हाट्सएप का पालन नहीं कर सकता है; यह केवल अक्षरों और संख्याओं के बाद अनुमति देता था, लेकिन यूनिकोड की शुरूआत ने चीजों को जटिल बना दिया।


2
साइट पर आपका स्वागत है! :)
DJMcMayhem

9

x86 32-बिट मशीन कोड, 11 बाइट्स (और भविष्य-प्रूफ 64-बिट)

90 90 90 90 90 90 90 90 90 0f 0b

यह है times 9 nop/ ud2। यह मूल रूप से एक एनओपी स्लेज है , इसलिए यह अभी भी 0 या अधिक nopएस के रूप में चलता है और फिर ud2एक अपवाद को बढ़ाने के लिए, चाहे कितने भी 0x90बाइट्स को एक पूर्ववर्ती ओपोड के ऑपरेंड के रूप में सेवन किया गया हो। अन्य एकल-बाइट निर्देश (जैसे times 9 xchg eax, ecx) भी काम करेंगे।

x86 64-बिट मशीन कोड, 10 बाइट्स (वर्तमान सीपीयू)

64-बिट मोड में कुछ 1-बाइट अवैध निर्देश हैं, जब तक कि कुछ भविष्य के आईएसए एक्सटेंशन 64-बिट मोड में उन्हें उपसर्ग या मल्टी-बाइट ऑपकोड के हिस्सों के रूप में पुन: पेश नहीं करते हैं, उनके अर्थ 32-बिट मोड में अलग हैं। 0x0eहै push cs32-बिट मोड में है, लेकिन मौजूदा CPUs पर अवैध 64-बिट में (इंटेल Skylake पर परीक्षण)।

0e 0e 0e 0e 0e 0e 0e 0e 0e 0e

निष्पादन योग्य मशीन कोड के लिए नियम व्याख्या :

  • बाइट्स को नहीं उछाला जा सकता (जैसे "पार्स नहीं किया गया" प्रतिबंध), क्योंकि सीपीयू अपवाद नहीं उठाते हैं जब तक कि वे वास्तव में डिकोड / निष्पादित (गैर-सट्टा) करने की कोशिश नहीं करते हैं।

  • अवैध का मतलब है हमेशा एक अपवाद, उदाहरण के लिए एक अवैध-अनुदेश अपवाद। (वास्तविक कार्यक्रम नंगे धातु पर एक अपवाद हैंडलर के साथ पकड़ सकते हैं या ओएस सिग्नल हैंडलर स्थापित कर सकते हैं, लेकिन मुझे लगता है कि यह चुनौती की भावना को पकड़ता है।)


यह काम करता है क्योंकि एक छोटा बाइट-स्ट्रिंग अंत में ud2एक अन्य निर्देश के लिए एक imm32 और / या एड्रेसिंग मोड के भाग के रूप में प्रकट हो सकता है, या निर्देशों की एक जोड़ी में विभाजित हो सकता है । यह इस बारे में सोचना आसान है कि आप एक निर्देश के भाग के रूप में बाइट्स का "उपभोग" करने के लिए स्ट्रिंग के सामने क्या रख सकते हैं, और कुछ ऐसा छोड़ दें जो गलती नहीं करेगा।

मुझे लगता है कि एक अनुदेश मनमाने ढंग से सामान के अधिकांश 9 बाइट्स पर उपभोग कर सकता है: एक एसआईबी बाइट, एक डिस्विस 2, और एक इम 32। इस निर्देश के पहले 2 बाइट्स 8 एनओपी और एक ud2 का उपभोग कर सकते हैं, लेकिन 9 नहीं।

c7 84 4b 00 04 00 00 78 56 34 12        mov dword [rbx+rcx*2+0x400],0x12345678

9 एनओपी को हरा नहीं सकते:

    db 0xc7, 0x84   ; opcode + mod/rm byte: consumes 9 bytes (SIB + disp32 + imm32)
    times 9 nop          ; 1-byte xchg eax, ecx or whatever works, too
    ud2
  ----
   b:   c7 84 90 90 90 90 90 90 90 90 90        mov    DWORD PTR [rax+rdx*4-0x6f6f6f70],0x90909090
  16:   0f 0b                   ud2    

64-बिट मोड:

 c7 84 0e 0e 0e 0e 0e 0e 0e 0e 0e        mov    DWORD PTR [rsi+rcx*1+0xe0e0e0e],0xe0e0e0e
 0e                      (bad)  

लेकिन 8 एनओपी + ud2 (या times 9 db 0x0e) के लिए बाइट अन्य इंसनों के हिस्से के रूप में दिखाई दे सकते हैं:

    db 0xc7, 0x84   ; defender's opcode + mod/rm that consumes 9 bytes

    times 8 nop          ; attacker code
    ud2

    times 10 nop    ;; defenders's padding to be consumed by the 0b opcode (2nd half of ud2)
----
  18:   c7 84 90 90 90 90 90 90 90 90 0f        mov    DWORD PTR [rax+rdx*4-0x6f6f6f70],0xf909090
  23:   0b 90 90 90 90 90       or     edx,DWORD PTR [rax-0x6f6f6f70]
  29:   90                      nop
  2a:   90                      nop
  ...

यहाँ पर नियम वास्तव में मेरे लिए पर्याप्त नहीं थे कि एक asm / machine code answer पोस्ट करने पर विचार करें। उदाहरण के लिए, आप ऐसा क्यों नहीं कर सकते ud2? ऐसा लगता है कि आप कह रहे हैं कि आप नियमों की व्याख्या बाइट्स पर कूदने से मना ud2करते हैं , इसलिए यह अपने आप ठीक काम करेगा, नहीं? ओह ... मुझे लगता है कि आप कह रहे हैं कि मुद्दा यह है कि ud2एक वैध निर्देश के लिए उपसर्ग के रूप में प्रकट हो सकता है? इस जवाब का दूसरा हिस्सा मेरे लिए समझना थोड़ा मुश्किल था।
कोडी ग्रे

@ कोडीग्रे: राइट, 2 बाइट्स जो किसी भी इंस्ट्रक्शन के ud2अंदर एनकोड कर सकते हैं imm32। मैं इस बारे में सोच रहा था कि आप इस तरह के तार के आगे क्या रख सकते हैं जो कि 0f 0bडिकोडिंग के बजाय पहले के निर्देश के हिस्से के रूप में "उपभोग" करते हैं ud2। मैं पूरी तरह से खुश नहीं था कि मैंने इसे कैसे प्रस्तुत किया, लेकिन मैं यह बताना चाहता था कि केवल 8 nopएस पर्याप्त नहीं था, और 9% nop+ के साथ क्या हुआ ud2
पीटर कॉर्ड्स

@ कोडीग्रे: एक एएसएम स्रोत कार्यक्रम एक पूरी तरह से अलग जवाब होगा। यह कोडांतरक द्वारा उपयोग किए गए पार्सर को त्रुटि देना होगा, न कि फॉल्टिंग मशीन-कोड का उत्पादन करना। तो कुछ ऐसा हो सकता है %else/ %elseहार के लिए काम कर सकता है %if 0, जो सामान्य रूप से किसी भी अमान्य पाठ को पार्स होने से बचा सकता है। (एक सीपीपी जवाब से विचार)
पीटर कॉर्ड्स

काफी संतुष्ट मत हो। आपका समाधान सिर्फ दत्त में हो सकता है। (हालांकि यह असंभव बनाता है)
l4m2

@ l4m2: प्रश्न को उत्तर देने योग्य / रोचक बनाने के लिए, मुझे इसे उस कोड तक सीमित करना होगा जिसे निष्पादित किया गया है (और कूद नहीं गया)। मेरे उत्तर में नियम व्याख्या बुलेट पॉइंट देखें। यह निश्चित रूप से स्थिर डेटा को भी नियंत्रित करेगा। क्योंकि तब यह मशीन कोड नहीं है, यह सिर्फ डेटा है। इस प्रश्न को समझ बनाने के लिए मशीन-कोड के उत्तर की तुलना में सबसे अधिक अनुकूलन की आवश्यकता है, क्योंकि कोई संकलन / इकट्ठा चरण नहीं है जहां आप पार्सर को त्रुटि दे सकते हैं, हम सिर्फ मेमोरी में बाइट्स के बारे में बात कर रहे हैं।
पीटर कॉर्डेस

7

सी #, 16 बाइट्स


*/"
#endif<#@#>

काम करता है क्योंकि:

  • // नई लाइन के कारण टिप्पणी काम नहीं करेगी
  • /* टिप्पणी की वजह से काम नहीं करेगा */
  • आप अकेले कोड में स्थिरांक नहीं रख सकते
  • #if falseप्रारंभ को जोड़ने के कारण काम नहीं करेगा#endif
  • "किसी भी स्ट्रिंग शाब्दिक बंद कर देता है
  • <#@#>एक अनाम निर्देश इसलिए टी -4 टेम्पलेट्स के लिए विफल रहता है है।
  • नई लाइन ट्रिक्स तो /शुरू में होने पर यह ट्रिक नहीं होगी*/

प्रत्येक भिन्नता एक संकलन त्रुटि के साथ विफल हो जाती है।


1
अजीब है कि आपने अपने कोड में T4 टेम्प्लेट शामिल करने का फैसला किया है। क्या T4 को एक अलग भाषा नहीं माना जाता है?
आर्टुरो टॉरेस सांचेज़

1
@ ArturoTorresSánchez मुझे नहीं पता कि मैंने उनके बारे में कभी नहीं सुना था। जब आपने T4 टेम्प्लेट को शामिल किया था, तो किसी ने यह टिप्पणी नहीं की थी इसलिए मैंने इसे ठीक किया।
TheLethalCoder

6

एपीएल और MATL और फोरट्रान , 3 बाइट्स


'

Newline, Quote, Newline हमेशा एक त्रुटि फेंकता है क्योंकि ब्लॉक टिप्पणियां मौजूद नहीं हैं:


यह MATL पर भी लागू होता है
लुइस

मुझे लगता है कि यह फोरट्रान में भी काम करेगा।
स्टेयडबॉक्स

5

साहित्य हास्केल , 15 बाइट्स

निम्मी द्वारा हटाए गए प्रयास को सुधारना ।


\end{code}
5
>

इसे ऑनलाइन आज़माएं!

निम्मी का मूल प्रयास अंतिम दो पंक्तियाँ हैं, जो साहित्य हास्केल पर आधारित >शैली साक्षर कोड को एक साक्षर टिप्पणी लाइन ( 5यहाँ) के लिए पड़ोसी लाइन पर नहीं होने देती है । यह विफल रहा क्योंकि इसे वैकल्पिक ("LaTeX") में एक टिप्पणी में एम्बेड किया जा सकता है: साक्षर कोडिंग शैली:

\begin{code}
{-
5
>
-}
\end{code}

हालांकि, \begin{code}लिटरेट हास्केल की शैली न तो घोंसला बनाती है, न ही अपने आप में और न ही {- -}बहुस्तरीय टिप्पणियों में, इसलिए लाइन के साथ लाइन लगाने \end{code}से पहले 5, उस वर्कअराउंड में विफल रहता है, और मैं एक अलग नहीं देखता।


4

फ्री पास्कल, 18 बाइट्स


*)}{$else}{$else}

पहले सभी संभव टिप्पणियों को बंद करें, फिर सशर्त संकलन संभालें।

अगर मैं कुछ भूल गया तो कृपया यहाँ टिप्पणी करें।


3
@ user902383 क्या आपके उदाहरण में उनके स्निपेट की अग्रणी रूपरेखा है?
ब्रायन जे।

@BrianJ नहीं, मुझे लगा कि यह सिर्फ प्रारूपण का मुद्दा था, मेरा खराब
user902383

मुझे नहीं लगता कि फ्री पास्कल में यह संभव है। बस उन्हें डाल दिया begin end.
jimmy23013

@ jimmy23013 लेकिन ऐसा लगता है कि end.मान्य होने के बाद कोड को प्रश्न की अनुमति है।
टीश

4

कमोडोर 64 बेसिक, 2 बाइट्स


B

(यह "B" अक्षर के बाद एक नई पंक्ति है)।

कमोडोर 64 प्रोग्राम में कोई भी लाइन या तो एक लाइन नंबर या BASIC कीवर्ड से शुरू होनी चाहिए, और स्टोर किए गए प्रोग्राम केवल लाइन नंबर की अनुमति देते हैं। "B" (या "H", "J", "K", "Q", "X", "Y", या "Z") के साथ कोई कीवर्ड शुरू नहीं होता है।


अगर मैं अपील करता हूं =0तो यह सिर्फ एक असाइनमेंट स्टेटमेंट बन जाता है ...
नील

1
@ नील, यह एक मान्य तत्काल-मोड कमांड होगा, लेकिन एक वैध कार्यक्रम नहीं।
मार्क

4

ब्रेन-हैक ( ब्रेन-फ्लैक का एक बदलाव ), 3 2 बाइट्स

ब्रेन- हैड के लिए धन्यवाद कि ब्रेन-हैक टिप्पणियों का समर्थन नहीं करता है, मुझे एक बाइट बचा रहा है।

(}

इसे ऑनलाइन आज़माएं!


ब्रेन-फ्लैक में आप कैसे टिप्पणी करते हैं? मुझे ऐसा करने का कोई तरीका नहीं पता है।
एलिक आउटफोलर

@EriktheOutgolfer # TIO
रिले

हुह निर्विवाद व्यवहार।
आउटगोल्फ जूल

@EriktheOutgolfer मैंने हमेशा माना कि वे कहीं दस्तावेज थे। मैं उन्हें जोड़कर देखूंगा।
रिले

आपको BrainHack या Craneflak में न्यूलाइन की आवश्यकता नहीं है, रेन-फ्लैक उन तीन संस्करणों में से एक है जो टिप्पणियों को पंक्तिबद्ध करते हैं। हालाँकि Craneflak मक्खी को पार करता है, इसलिए Craneflak में इसे हल करना असंभव है, किसी भी समाधान को पहले से ही पीटा जा सकता है (()){()}
श्रीकोटिलिज्म ओ'जैसिक


3

VBA, 2 बाइट्स

अंडरस्कोर के बाद एक लाइनफीड - वीबीए _में लाइन निरंतरता चरित्र के रूप में कार्य करता है, और जैसा कि लाइन निरंतरता के बाईं या ऊपर लाइन में कुछ भी नहीं है, वीबीए की बहुस्तरीय टिप्पणियों की कमी के साथ युग्मित होने का मतलब है कि यह हमेशा संकलन फेंक देगा समय त्रुटिCompile Error: Invalid character


_

आप एक नई लाइन पर शुरू होने वाले अपने पैटर्न पर निर्भर करते हैं ... इसलिए, एक नई पंक्ति जोड़ें।
Deduplicator

@ डेड्यूप्लिकेटर के पास पहले से ही एक नई लाइन है, - इससे कोई फर्क नहीं पड़ता कि क्या इस प्रकार है _, केवल यह कि बाईं या इसके ऊपर कोई वैध लाइन नहीं है
टेलर स्कॉट

क्या होगा अगर यह इस तरह एम्बेडेड है myfunction( \n_ ):?
डेडुप्लिकेटर

@ डुप्लिकेटर लाइन निरंतरता वर्ण उसी लाइन पर होना चाहिए जैसा कि वह जारी है Public Function Foo( ByVal bar as Integer, _ (नई लाइन) bas as long) as double- इसलिए हां, यदि आप वर्णित फ़ंक्शन को कॉल करते हैं तो यह त्रुटि होगी
टेलर स्कॉट

ठीक है, उस मामले में यह अधिक पसंद है myfunction( _ \n_ )। गलतफहमी के लिए खेद है। इसे दूसरे तरीके से रखने के लिए, आपको दो नए अक्षरों का उपयोग करना चाहिए।
Deduplicator

3

स्माइलबासिक, 2 बाइट्स


!

एक पंक्ति के अंत में कुछ भी जारी नहीं रहता है, इसलिए आपको केवल एक पंक्ति ब्रेक की आवश्यकता होती है जिसके बाद कुछ ऐसा हो सकता है जो एक बयान की शुरुआत नहीं हो सकता है। !तार्किक ऑपरेटर नहीं है, लेकिन आपको अभिव्यक्ति के परिणाम की अनदेखी करने की अनुमति नहीं है, इसलिए यहां तक ​​कि कुछ भी !10अमान्य होगा (जबकि X=!10काम करता है, निश्चित रूप से)

इसी तरह की चीजें किसी भी भाषा में काम करेंगी जहां सब कुछ एक पंक्ति के अंत में समाप्त होता है, जब तक कि इसे निष्पादित करने से पहले कोड को पार्स करता है।

बहुत सारे वैकल्पिक वर्ण हैं जिनका उपयोग यहां किया जा सकता है, इसलिए मुझे लगता है कि COULD मान्य होने वालों की सूची बनाना अधिक दिलचस्प होगा।

@उदाहरण के लिए, एक लेबल की शुरुआत है @DATA; (एक अभिव्यक्ति का हिस्सा हो सकता है जैसे (X)=1कि किसी कारण से अनुमति दी जाती है; कोई भी पत्र या _परिवर्तनशील नाम X=1, फ़ंक्शन कॉल LOCATE 10,2या कीवर्ड हो सकता है WHILE 1; 'एक टिप्पणी है; और के ?लिए कम है PRINT


ओह, किसी कारण से जब मैंने पोस्ट को एडिट किया तो उसे डुप्लिकेट कर दिया गया ...
12M2121

3

INTERCAL , 12 बाइट्स

DOTRYAGAINDO

इसे ऑनलाइन क्रैक करने का प्रयास करें!

SynCAL का सिंटैक्स त्रुटियों के लिए दृष्टिकोण थोड़ा विशेष है। अनिवार्य रूप से, एक अमान्य बयान वास्तव में त्रुटि नहीं करेगा जब तक कि कार्यक्रम इसे निष्पादित करने का प्रयास नहीं करता है। वास्तव में, टिप्पणियों के लिए मुहावरेदार वाक्यविन्यास उनके साथ शुरू करना है PLEASE NOTE, जो वास्तव में सिर्फ एक बयान शुरू करता है, यह घोषणा करता है कि इसे निष्पादित नहीं किया जाना है, और फिर पत्र के साथ शुरू होता है E। यदि आपका कोड इसके DODOबीच में है, तो आप DOABSTAINFROM(1)(1)किसी भी वैध स्टेटमेंट को समाप्त कर सकते हैं और समाप्त DODODOकर सकते हैं, और आप ठीक हो जाएंगे, यदि आप इसके चारों ओर निष्पादन को मोड़ सकते हैं (1)DON'TDODODOCOMEFROM(1)। भले ही INTERCAL के पास उनसे बचने के लिए स्ट्रिंग शाब्दिक सिंटैक्स का अभाव है, लेकिन अवैध स्ट्रिंग बनाने के लिए सिंटैक्स त्रुटियों का उपयोग करने का कोई तरीका नहीं है, यहां तक ​​कि हर संभव पंक्ति संख्या को समाप्त करना(1)DO(2)DO...(65535)DODODO, क्योंकि ऐसा लगता है कि COME FROMउनमें से किसी के साथ काम करने के साथ डुप्लिकेट लाइन नंबर होना बहुत संभव है ।

एक अवैध स्ट्रिंग बनाने के लिए, हमें वास्तव में एक पूरी तरह से मान्य कथन का उपयोग करने की आवश्यकता है TRY AGAIN:। यहां तक ​​कि अगर इसे निष्पादित नहीं किया जाता है, तो यह एक कार्यक्रम में कड़ाई से अंतिम बयान होना चाहिए, यदि यह कार्यक्रम में बिल्कुल भी नहीं है। 12 बाइट्स, मेरी जानकारी में, एक अवैध स्ट्रिंग का उपयोग करने वाला सबसे छोटा तार हो सकता है TRY AGAIN, क्योंकि यह गारंटी देने की आवश्यकता है कि इसके बाद एक बयान है (निष्पादित या नहीं) इसलिए DOTRYAGAINयह केवल सामान्य कोड है, और यह सुनिश्चित करने की आवश्यकता है कि संपूर्ण विवरण वास्तव में है TRY AGAIN, इसलिए TRYAGAINDOकाम नहीं करता है क्योंकि यह आसानी से एक उपेक्षित, सामान्य वाक्यविन्यास त्रुटि में बदल सकता है: DON'TRYAGAINDOGIVEUPया PLEASE DO NOT TRY TO USE TRYAGAINDO NOT THAT IT WOULD WORK। इससे कोई फर्क नहीं पड़ता कि आप दोनों में से किसी पर भी डालते हैं , या DOTRYAGAINDOतो ICL993I I GAVE UP LONG AGO, या , आप त्रुटि करेंगे ।ICL079I PROGRAMMER IS INSUFFICIENTLY POLITEICL099I PROGRAMMER IS OVERLY POLITE


कुछ अन्य संकलन-समय की त्रुटियां हो सकती हैं जो पहले आग लगा सकती हैं ICL993I I GAVE UP LONG AGO
असंबद्ध स्ट्रिंग

यदि, हर लाइन लेबल का उपयोग करते समय, आप हर लाइन लेबल का उपयोग करते हैं, तो COME FROMब्लॉक के चारों ओर नियंत्रण प्रवाह को मोड़ना थोड़ा मुश्किल हो सकता है, लेकिन आपको बस रोकने से कुछ नहीं होता है GIVING UP!
असंबंधित स्ट्रिंग

3

AWK , 4 बाइट्स



/

इसे ऑनलाइन आज़माएं!

चूंकि AWKबहु-पंक्ति टिप्पणियों को करने की कोई विधि नहीं है, इसलिए /टिप्पणी करने से रोकने या इसे regex में बदलने से रोकने के लिए पहले 2 नए और 1 की आवश्यकता है , जैसे ऐड 1/। सबसे आम संदेश `अप्रत्याशित न्यूलाइन या स्ट्रिंग के अंत।

पिछली दरार के साथ


2

फोरट्रान, 14 बाइट्स


end program
e

फोरट्रान में कोई बहुस्तरीय टिप्पणी या पूर्वप्रक्रमक निर्देश नहीं।


1
क्या यह ऑनलाइन परीक्षण करने का एक अच्छा तरीका है? इसके अलावा, फोरट्रान का कौन सा संस्करण / संकलक?
रॉबर्ट बेन्सन

2

जावास्क्रिप्ट (Node.js) , N बाइट्स

`*/
\u`~

इसे ऑनलाइन आज़माएं!

मुझे लगता है कि यह पर्याप्त अवैध होना चाहिए।

पिछला जेएस अन्य उत्तरों में प्रयास करता है

* / \ यू)

@Cows द्वारा बोली

ES5 जवाब के रूप में यह मान्य होना चाहिए, लेकिन ES6 में कोड को बैकटिक्स की एक जोड़ी के साथ लपेटने से यह नष्ट हो जाता है। परिणामस्वरूप ES6 के उत्तर मान्य मान्य बैकटिक्स को शामिल करना चाहिए।

`
`* /} '" `\ यू!

@ हृदय से

यह एक बेहतर संस्करण है जिसमें बैकटिक्स शामिल है। हालाँकि /, कोड के टूटने के बाद एक एकल (यह एक टेम्पलेट शाब्दिक हो जाता है, जिसे regex द्वारा गुणा किया जाता है, बेकार लेकिन उचित रूप से मान्य है।) @Neil ने एक सुझाव दिया है जो इसमें बदल रहा !है )। यह सैद्धांतिक रूप से काम करना चाहिए क्योंकि /अंत में जोड़ना अब काम नहीं करता है (विकृत रेगेक्स के कारण।)

व्याख्या

`*/
\u`~

यह अपने आप अवैध है, और सभी सिंगल और डबल कोट्स को भी ब्लॉक करता है क्योंकि उन कोट्स को लाइन \के अंत में बिना लाइनों के फैलाया नहीं जा सकता है

//`*/
\u`~

तथा

/*`*/
\u`~

गैरकानूनी पलायन अनुक्रमों की शुरुआत करके टिप्पणियों को अवरुद्ध करता है

``*/
\u`~

गैर-समाप्त RegExp शाब्दिक शुरू करके प्रारंभिक बैकटिक को अवरुद्ध करता है

console.log`*/
\u`~

ब्लॉक ने दो बैकटिक्स के बीच अपेक्षित ऑपरेटर को शुरू करके टेम्प्लेट शाब्दिकों को टैग किया


2

रॉकस्टार , 4 5 बाइट्स

पार किया 4 अभी भी 4 है :(

)
"""

रॉकस्टार एक बहुत ही ... चिंताजनक भाषा है।
जबकि "एक स्ट्रिंग को परिभाषित करने के लिए इस्तेमाल किया जा सकता है, जैसे कि Put "Hello" into myVar, मेरी जानकारी के लिए, किसी टिप्पणी के बाहर प्रकट होने के लिए 3 उद्धरणों के लिए कोई रास्ता नहीं है, और करीबी पेरेन सुनिश्चित करता है कि या तो ऐसा नहीं होगा (रॉकस्टार में टिप्पणियाँ कोष्ठक में संलग्न हैं, जैसे इस)।

रॉकस्टार में एक काव्य शाब्दिक वाक्य-विन्यास भी है, जिसमें विराम चिह्न को अनदेखा किया जाता है, इसलिए नई पंक्ति यह सुनिश्चित करती है कि 3 उद्धरण कोड की एक पंक्ति की शुरुआत है, जिसे हमेशा अमान्य होना चाहिए


के बारे में क्या (()"""), यह एक नहीं सेशन नहीं होगा?

@ बीएमओ पहले परन ने एक टिप्पणी खोली, 2 डी परन कुछ नहीं करता क्योंकि यह टिप्पणी की गई है, 3 डी """)
परिन

हम्म, नेस्टेड टिप्पणियां चश्मा में नहीं हैं। टिप्पणियां वैसे भी हतोत्साहित करने वाली लगती हैं। लेकिन आप का निरीक्षण किया काव्य स्ट्रिंग शाब्दिक जो किसी भी स्ट्रिंग की अनुमति देते हैं, तो Goethe says )"""मान्य है

@BMO अच्छा बिंदु, inbetween एक नई पंक्ति डालने से ठीक किया जा सकता )और"""
Skidsdev

2

पॉवर्सशेल, 10 8 12 14 13 14 16 बाइट्स

Mazte ​​करने के लिए -2 बाइट धन्यवाद इसे खोजने के लिए एक बेहतर तरीका है
+4 -1 बाइट्स IsItGreyOrGray के लिए धन्यवाद

$#>
'@';
"@";
@=

मेरी आशा है कि इससे काम हो जाए। 'और "उद्धरणों से बचाव के #>लिए, ब्लॉक-टिप्पणी को तोड़ने के लिए, सिंगल-लाइन टिप्पणी को रोकने के लिए नई लाइनें, दोनों '@और "@स्ट्रिंग्स की एक और शैली को पकड़ने के लिए, और फिर एक सिंटैक्स त्रुटि को फेंकने के लिए एक अनुचित सरणी शुरू करता है।

जो तर्क वे अंदर जाने के लिए उद्धरण के किसी भी सेट का उपयोग नहीं कर सकते, वे इसे बाहर टिप्पणी नहीं कर सकते हैं, यदि @"उपयोग किया जाता है, तो यह यहां एक स्ट्रिंग बनाएगा जिसमें एक टोकन नहीं हो सकता है, और यदि वे इसे अकेला छोड़ दो, यह एक टूटी हुई सरणी बनाने की कोशिश करेगा। यह कथन इतनी मेहनत से जीना चाहता है, मैं कवच में और भी छेद ढूंढता रहता हूं।


1
या संरक्षक +@=
mazzy

1
@IsItGreyOrGray AAAAAAAAAAAw हेक।
विस्काह

2
ऐसा लग रहा है कि #> से $ # को बदलने से यह टूट जाएगा क्योंकि "एक cmdlet के नाम के रूप में मान्यता प्राप्त नहीं है ..." इसे किसी तरह से फिर से कानूनी बनाया जा सकता है, लेकिन मेरे पास कोई रास्ता नहीं है। फिर भी। :)
ग्रेऑरेग्रे

1
@IsItGreyOrGray Sonofagun अब अर्ध-औपनिवेशिक कवच की विशेषता है?
विस्काह

1
अच्छा! मुझे कुछ नहीं मिला है। मैंने जो कुछ भी आजमाया है वह विफल रहा है।
ग्रेऑरेग्रे

2

रूनिक एनकाउंटर, 3 बाइट्स

कई संभावित विविधताओं में से एक।

इसे ऑनलाइन आज़माएं!

रूनिक यूनिकोड संयोजन वर्णों का उपयोग " " (जहां एक कमांड है) Mके व्यवहार को संशोधित करता है। जैसे, किसी भी दो संशोधक को एक ही कमांड को संशोधित करने की अनुमति नहीं है और यदि ऐसा होने पर पार्सर एक त्रुटि करेगा।CC

इसी प्रकार, कुछ निर्देश जो आईपी को पुनर्निर्देशित करते हैं, उन्हें किसी भी तरह से संशोधित नहीं किया जा सकता है, क्योंकि दिशा संशोधित करने वाले संशोधक पात्रों के अस्तित्व के कारण (और दोनों एक ही सेल में कोई मतलब नहीं है)।

इसे वैध बनाने के लिए स्ट्रिंग से बचने या शाब्दिक-आकार देने का कोई तरीका नहीं है। Tio लिंक में ;उच्च-प्राथमिकता "कोई टर्मिनेटर" त्रुटि को बायपास करने के लिए एक शामिल है ।


2

टीआई-बेसिक (83 + / 84 + / एसई, 24500 बाइट्स)

A

(24500 बार)

TI (-83 + / 84 + / SE) -बेशिक वाक्य-विन्यास की जाँच केवल उन कथनों पर करता है, जो पहुँचता है, इसलिए Endएक पंक्ति में भी 5000 कथनों को छोड़ दिया जा सकता हैReturn । यह, इसके विपरीत, TI-83 + / 84 + / SE की रैम में फिट नहीं हो सकता है, इसलिए कोई भी प्रोग्राम इस स्ट्रिंग को शामिल नहीं कर सकता है। चरित्र के साथ थोड़ा रूढ़िवादी होने के कारण यहां गिनती होती है।

मूल TI-83 में 27000 बाइट्स RAM है, इसलिए आपको 27500 की आवश्यकता होगी A उस स्थिति में s की ।

टीआई-बेसिक (89 / टीआई / 92 + / वी 200, 3 बाइट्स)

"

न्यूलाइन, उद्धरण, न्यूलाइन। नईलाइन किसी भी टिप्पणी को बंद कर देती है (और स्ट्रिंग में अवैध चरित्र को एम्बेड करना बंद कर देती है, क्योंकि AFAIK मल्टीलाइन स्ट्रिंग स्थिरांक की अनुमति नहीं है), दूसरी नईलाइन स्ट्रिंग को बंद करने से इनकार करती है, और उद्धरण एक सिंटैक्स त्रुटि देता है।

आप के साथ 2 बाइट्स प्राप्त कर सकते हैं

±

न्यूलाइन के बिना, लेकिन मुझे यकीन नहीं है कि क्या यह मायने रखता है क्योंकि ±यह केवल स्ट्रिंग स्थिरांक में मान्य है।


हो गया, धन्यवाद :)
bb94

2

जाओ , 6 बाइट्स


*/```

इसे ऑनलाइन क्रैक करने का प्रयास करें!

गंभीर उच्चारण (`) एक कच्चे स्ट्रिंग शाब्दिक चिह्न को दर्शाता है, जिसके अंदर`, को छोड़कर सभी वर्णों को शामिल किया जाता है, जिनमें नईलाइन और बैकस्लैश शामिल हैं, का शाब्दिक अर्थ स्ट्रिंग के भाग के रूप में है। एक पंक्ति में तीन `मूल हैं: आसन्न स्ट्रिंग शाब्दिक अमान्य हैं और` हमेशा एक ` स्ट्रिंग को बंद कर देता है , इसलिए उनमें से कोई मतलब नहीं है। मुझे विरोधी परिधि के लिए 3 और बाइट्स का उपयोग करना पड़ा, एक नई पंक्ति तो हम एक-लाइन टिप्पणी या सामान्य उद्धृत स्ट्रिंग के अंदर नहीं हो सकते, और एक * / इसलिए हम एक बहु-पंक्ति टिप्पणी के अंदर नहीं हो सकते।


1

भूमिगत कक्ष , 4 बाइट्स

Silos प्रतिस्पर्धी \ o / है


x+

SILOS एक दो पास दुभाषिया / संकलक पर चलता है। निष्पादन के पहले "संकलक" स्रोत को सरलीकृत करने के प्रयास को एक सरणी में बताता है जिसमें खट्टी का वर्णन किया जाता है प्रत्येक पंक्ति को अलग से व्यवहार किया जाता है। x + a एक असाइनमेंट ऑपरेटर है जो e को x के मान से जोड़ेगा और x में स्टोर करेगा। हालांकि "संकलक" टूट जाएगा। इसलिए, हम इस स्ट्रिंग को लेते हैं और इसे सुनिश्चित करने से पहले और बाद में एक नई लाइन जोड़ते हैं और संकलक को तोड़ते हैं।

इसे ऑनलाइन आज़माएं!


ax+त्रुटि क्यों नहीं होती?
आउटगोल्फ जूल

अपरिभाषित संकलक व्यवहार @EriktheOutgolfer
रोहन झुनझुनवाला

1

AutoHotkey , 5 बाइट्स

`पलायन चरित्र है। जब आप इसे किसी वैरिएबल पर असाइन करते हैं तो आप केवल "बच सकते हैं"।

\ n * / इसे टिप्पणी करने से रोकता है या एक चर को सौंपा जाता है।


*/`"

1

जावास्क्रिप्ट, 11 अक्षर

`
`*/}'"`\u)

बैकस्टिक्स टेम्प्लेट स्ट्रिंग्स को मारना सुनिश्चित करते हैं, उद्धरण स्ट्रिंग्स से छुटकारा पाते हैं, न्यूलाइन टिप्पणी लाइनों से बचते हैं, टिप्पणी का अंत ब्लॉक टिप्पणियों से बचता है, और अंतिम बैकटिक और भागने (एक आकर्षक संख्या से बचने के लिए) एक अमान्य शुरू करने का प्रयास करें! स्ट्रिंग।

इसे ऑनलाइन आज़माएं!



ES5 उत्तर का उपयोग एक के )बाद \u, हो सकता है कि यहाँ काम करेगा?
नील
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.