यह कोड * * * और * उस * पर त्रुटिपूर्ण है, क्या यह वास्तव में उनमें लिखा गया है?


25

मैं आप के लिए देख रहा हूँ भाषा नहीं हूँ से प्रेरित !

चुनौती

दो अलग-अलग प्रोग्रामिंग भाषाएं चुनें, और एक प्रोग्राम लिखें जो निम्नलिखित पंक्ति को स्टडआउट (या समकक्ष) में प्रिंट करता है:

This program errors out in <the current language> :P

और फिर प्रत्येक दो भाषाओं में विभिन्न प्रकार की त्रुटि उत्पन्न करता है।

नियम

कुछ नियम मूल चुनौती से लिए गए हैं।

  • आउटपुट में, भाषा के नामों का बिल्कुल पालन करना चाहिए:
    • नाम पर सूचीबद्ध TIO , वैकल्पिक संस्करण संख्या और / या कार्यान्वयन नाम को छोड़कर (जैसे अगर आप का उपयोग JavaScript (Node.js)अपने भाषाओं में से एक के रूप में, आप उपयोग कर सकते हैं JavaScriptअपनी भाषा नाम के लिए, लेकिन नहीं JSया Javascript।)
    • आधिकारिक वेबसाइट पर पूरा नाम (या GitHub रेपो) यदि आपकी पसंद की भाषा TIO पर उपलब्ध नहीं है।
  • न तो प्रोग्राम को उपयोगकर्ता से कोई इनपुट लेना चाहिए।
  • आप किसी भी भाषा में टिप्पणियों का उपयोग कर सकते हैं।
  • एक ही भाषा के दो अलग-अलग संस्करण अलग-अलग भाषाओं में गिने जाते हैं।
    • यदि यह किया जाता है, तो कार्यक्रम को प्रमुख संस्करण संख्या का उत्पादन करना चाहिए, और यदि दो अलग-अलग लघु संस्करणों पर चल रहा है, तो लघु संस्करण को भी रिपोर्ट करना चाहिए।
    • आपको पूर्वनिर्मित संस्करण फ़ंक्शंस का उपयोग नहीं करना चाहिए (इसमें वे चर शामिल हैं जिनका पहले से ही रनटाइम पर मूल्यांकन किया गया है)।
  • एक ही भाषा में दो अलग-अलग कमांड लाइन के झंडे भी इस मेटा सर्वसम्मति के अनुसार अलग-अलग भाषाओं में गिने जाते हैं , जब तक कि झंडे में कोड के टुकड़े (जैसे -Dblahblah...C) शामिल न हों।
    • यदि ऐसा किया जाता है, तो प्रोग्राम को उपयोग किए गए झंडे का भी उत्पादन करना चाहिए।
  • जब तक दोनों त्रुटियों को एक ही शब्दार्थ (जैसे "शून्य से विभाजन", "विभाजन दोष", या "सीमा से बाहर सूचकांक") उत्पन्न नहीं किया जाता है, तब तक दो त्रुटियों को अलग-अलग माना जाता है।
    • यदि किसी भाषा का रनटाइम एक त्रुटि के बाद बाहर नहीं निकलता है, लेकिन उपयोगकर्ता को किसी तरह से त्रुटि रिपोर्ट करता है, तो यह एक वैध त्रुटि है।
    • यदि कोई भाषा त्रुटि संदेशों में भेदभाव नहीं करती है, लेकिन कारणों की एक ज्ञात सूची है जो त्रुटि का कारण बनती है, तो आपको त्रुटि संदेश नहीं, कारण निर्दिष्ट करना होगा।
      एक उदाहरण है ><>, जिसमें केवल एक त्रुटि संदेश है something smells fishy..., लेकिन esolangs wiki पृष्ठ में त्रुटि कारणों की एक सूची है।
  • सिंटैक्स त्रुटि की अनुमति तब तक नहीं दी जाती है जब तक कि यह कॉल eval()या समान के द्वारा उत्पन्न न हो ।
  • मैन्युअल रूप से throw(जेएस), raise(पायथन), die(पर्ल) या इसी तरह की किसी चीज को फेंकने की अनुमति है, लेकिन उन सभी को एक तरह की त्रुटि माना जाता है।
  • 2 डी या गोल्फलैंग्स में अमान्य कमांड द्वारा त्रुटि की भी अनुमति है (और एक प्रकार की त्रुटि के रूप में माना जाता है)।

उदाहरण

अजगर और रूबी

  • पायथन: This program errors out in Python :Pस्टडआउट के लिए, फिर अपरिभाषित पहचानकर्ता
  • रूबी: This program errors out in Ruby :Pstdout करने के लिए, फिर सीमा से बाहर

C89 और C99

  • C89: स्टडआउट के This program errors out in C 89 :Pलिए, फिर शून्य से विभाजन
  • C99: स्टडआउट के This program errors out in C 99 :Pलिए, फिर विभाजन दोष

ध्यान दें कि संस्करण संख्या को हमेशा एक स्थान से भाषा के नाम से अलग किया जाना चाहिए ।

पायथन 2.7.9 और पायथन 2.7.10

  • पायथन 2.7.9: स्टैडआउट This program errors out in Python 2.7.9 :Pकरने के लिए, फिर eval पर सिंटैक्स त्रुटि
  • पायथन 2.7.10: स्टडआउट के This program errors out in Python 2.7.10 :Pलिए, फिर तानाशाही पर महत्वपूर्ण त्रुटि

पर्ल और पर्ल -n

  • पर्ल: This program errors out in Perl :Pस्टडआउट के लिए, फिर अमान्य समय प्रारूप
  • Perl -n: This program errors out in Perl -n :Pstdout करने के लिए, फिर उस फ़ाइल को खोलने का प्रयास करें जो मौजूद नहीं है

जीतने की स्थिति

यह , इसलिए बाइट्स में सबसे छोटा कोड जीत जाता है। लेकिन आपको हमेशा एक उत्तर पोस्ट करने के लिए प्रोत्साहित किया जाता है जो बहुत ही कम नहीं होने पर भी मज़ेदार या दिलचस्प हो।



क्या कार्यक्रम को रोकने के लिए त्रुटि की आवश्यकता है?
जो किंग

मैंने शुरू में ऐसा सोचा था। हालांकि, अगर कुछ भाषाएं हैं जो (संभवत: अपरिभाषित व्यवहार के साथ) जारी रख सकती हैं, तो "शून्य द्वारा विभाजन" जैसे कुछ तंत्र के साथ यह स्वीकार करने के लिए कि कार्यक्रम में उस त्रुटि का सामना करना पड़ा, तो मैं खुशी से अनुमति दूंगा।
बुबलर

मुझे लगता है कि मैं पहले से ही जवाब जानता हूं, लेकिन सिर्फ मामले में: वाक्य This program errors out in ...में मिश्रित रिक्त स्थान / स्थान के बजाय मिश्रित स्थान हो सकते हैं?
केविन क्रूज़सेन

संबंधित (दो अलग-अलग भाषाओं में दो अलग-अलग ग्रंथों को प्रिंट करें)।
केविन क्रूज़सेन

जवाबों:


33

पायथन 2 / पायथन 3 , 60 बाइट्स

print("This program errors out in Python %d :P"%(3/2*2))*1;a
  • अजगर 2 मिला NameError: name 'a' is not defined
  • अजगर 3 मिला unsupported operand type(s) for *: 'NoneType' and 'int'

अजगर 2:

  • /पूर्णांक विभाजन है, 3/2 को 1 मिला; int (3/2 * 2) 2 है।
  • प्रिंट एक स्टेटमेंट है, इसलिए पहले स्टेटमेंट को पढ़ें print((...)*1), यहाँ का *1अर्थ है एक बार स्ट्रिंग को दोहराना।
  • दूसरे कथन ने एक गैर-मौजूदा चर का संदर्भ दिया, जो त्रुटि का कारण बना।
  • इसे ऑनलाइन आज़माएं!

पायथन 3:

  • '/' फ्लोटिंग नंबर डिवीजन है, 3/2 को 1.5 मिला; int (3/2 * 2) 3 है।
  • प्रिंट एक फंक्शन है, इसलिए पहले स्टेटमेंट को पढ़ें (print(...))*1
  • फ़ंक्शन printरिटर्न None; गुणा काम नहीं करता है None x int, इसलिए यह "असमर्थित ऑपरेंड" की रिपोर्ट करता है।
  • इसे ऑनलाइन आज़माएं!

15

सी और सी ++, 114 101 बाइट्स

-13 बाइट्स l4m2 के लिए धन्यवाद !

#include<stdio.h>
main(){auto d=.5;printf("This program errors out in C%s :P",d?"++":"");2[&d]+=1/d;}

C ++ में विभाजन दोष, C में फ्लोटिंग पॉइंट अपवाद।

autointC में चूक (int).5हो जाती है 0, इसलिए इसे विभाजित करने का प्रयास मूल रूप से शून्य द्वारा किया जाता है।

C ++ 1/dमें 2 है, इसे संबोधित करने के लिए जोड़ना dऔर उस पते को बदलने की कोशिश करना 'मूल्य एक segfault फेंकता है।

इसे C ++ में आज़माएं!
इसे C में आज़माएं!


1
सुनिश्चित नहीं हैं कि यह मदद करता है, लेकिन अगर आप 2 और 0 के लिए C / C ++ मैप कर सकते हैं, तो आप इस्तेमाल कर सकते हैं अगर "++"+n, जहां nहै 0सी ++ के लिए और 2सी के लिए
कोनोर ओ ब्रायन

2
d?"++":""9 चार, "++"+4*d8 चर। लेकिन पीछे की तरफ C / C ++ मिलता है। आह।
यार्क

1
int main(){auto d=.5;printf("This program errors out in C%s :P",d?"++":"");2[&d]+=1/d;}(105) हालाँकि मुझे नहीं पता कि क्यों
l4m2

1
साथ intही छोड़ा जा सकता है
l4m2

L"⬫"+!dd?"++":""
सीवनकट

14

जावास्क्रिप्ट + HTML / HTML + जावास्क्रिप्ट, १६० बाइट्स

<!--
document.write`This program errors out in JavaScript + HTML :P`()
--><script>document.write`This program errors out in HTML + JavaScript :P`+X</script>

<!--
document.write`This program errors out in JavaScript + HTML :P`()
--><script>document.write`This program errors out in HTML + JavaScript :P`+X</script>

यकीन नहीं होता कि यह दो भाषाओं में गिना जाता है, लेकिन यह हास्यास्पद है।


तो, पूर्व अपरिभाषित पहचानकर्ता है, बाद वाला एक गैर-फ़ंक्शन प्रकार पर फ़ंक्शन कॉल है। तकनीकी रूप से मैं पूर्व HTML और बाद के जावास्क्रिप्ट पर विचार करूंगा, लेकिन वास्तव में अच्छा विचार है।
बब्बलर

<!-- ... -->सिंगल लाइन टिप्पणी मार्करों के रूप में एक अच्छा उपयोग (मुझे पता है कि यह पिछड़े संगतता कारणों के लिए कल्पना में है)
शायरु असाकोटो

12

जावा 8 और C99, 172 बाइट्स

//\
interface a{static void main(String[]a){System.out.print("This program errors out in Java 8 :P");a[1]=""/*
main(n){{n=puts("This program errors out in C99 :P")/0/**/;}}

'Abc' और 'cba' चुनौती के लिए मेरे जवाब के आधार पर ।

इसे जावा 8 में आज़माएँ - परिणामस्वरूप ArrayIndexOutOfBoundsException: 1
इसे C में आज़माएं - परिणामस्वरूप फ्लोटिंग पॉइंट अपवाद: शून्य से विभाजन अपरिभाषित है

स्पष्टीकरण:

//\
interface a{static void main(String[]a){System.out.print("This program errors out in Java 8 :P");a[1]=""/*
main(n){{n=puts("This program errors out in C99 :P")/0/**/;}}

जैसा कि आप ऊपर दिए गए जावा-हाइलाइट किए गए कोड में देख सकते हैं, पहली पंक्ति के कारण एक टिप्पणी है //, और सी-कोड के कारण एक टिप्पणी है /* ... */, जिसके परिणामस्वरूप:

interface a{static void main(String[]a){System.out.print("This program errors out in Java 8 :P");a[1]="";}}

तो यह STDOUT को प्रिंट करता है, और फिर दूसरे प्रोग्राम-तर्क (जब कोई नहीं दिया जाता है) तक पहुंचने की कोशिश करता है, तो यह ArrayIndexOutOfBoundsException पैदा करता है ।


//\
interface a{static void main(String[]a){System.out.print("This program errors out in Java 8 :P");a[1]=""/*
main(n){{n=puts("This program errors out in C99 :P")/0/**/;}}

सी-हाइलाइटिंग को सही तरीके से कैसे सक्षम किया जाए, यह सुनिश्चित नहीं है, क्योंकि lang-cजावा के समान ही हाइलाइटिंग है। लेकिन //\अगली पंक्ति के बारे में टिप्पणी करेंगे, जो जावा-कोड है, जिसके परिणामस्वरूप:

main(n){{n=puts("This program errors out in C99 :P")/0;}}

इसलिए यह STDOUT को इंगित करता है, और फिर शून्य त्रुटि द्वारा एक विभाजन देता है।


मुझे लगता है कि यह C89 और C99 दोनों के साथ काम करेगा। मुझे मत पकड़ो।
SIGSTACKFAULT

//C99 के साथ सी में जोड़ा गया था।
betseg

आप दोनों को धन्यवाद, मैंने इसे बदल दिया है C99
केविन क्रूज़सेन

a[1]इसके बजाय क्यों a[0]?
xehpuk

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

11

जावा 8 और व्हॉट्सएप , 439 431 428 408 बाइट्स

                         






























 interface a{static void    main(String[]a){System.out.print("This program errors out"+
" in Java 8 :P");a[0]="";}}













इसे जावा 8 में आज़माएँ - परिणामस्वरूप ArrayIndexOutOfBoundsException: 0
इसे व्हॉट्सएप में आज़माएं - परिणामस्वरूप उपयोगकर्ता त्रुटि (Infix Plus नहीं कर सकता)

स्पष्टीकरण:

जावा 8:

interface a{static void main(String[]a){System.out.print("This program errors out"+
" in Java 8 :P");a[0]="";}}

तो यह STDOUT को प्रिंट करता है, और फिर पहले प्रोग्राम-तर्क (जब कोई नहीं दिया जाता है) तक पहुंचने की कोशिश करता है, इसलिए यह ArrayIndexOutOfBoundsException का उत्पादन करता है ।


श्वेत रिक्ति:

[S S T  T   T   T   T   T   N
_Push_-31_P][S S T  T   T   S T S T N
_Push_-53_:][S S T  T   S S T   T   T   T   N
_Push_-79_space][S S T  T   S T S N
_Push_-10_e][S S T  T   T   S S N
_Push_-12_c][S S T  T   T   T   S N
_Push_-14_a][S S S T    N
_Push_1_p][S S S T  S S N
_Push_4_s][S S T    T   S T S N
_Push_-10_e][S S S T    S T N
_Push_5_t][S S T    T   T   S N
_Push_-6_i][S S T   T   T   T   N
_Push_-7_h][S S T   T   T   S S S N
_Push_-24_W][S T    S S T   S T S N
_Copy_0-based_10th_(-79_space)][S S T   T   N
_Push_-1_n][S S T   T   T   S N
_Push_-6_i][S T S S T   S N
_Copy_0-based_2nd_(-79_space)][S S S T  S T N
_Push_5_t][S S S T  T   S N
_Push_6_u][S S S N
_Push_0_o][S T  S S T   T   N
_Copy_0-based_3rd_(-79_space)][S S S T  S S N
_Push_4_s][S S S T  T   N
_Push_3_r][S S S N
_Push_0_o][S S S T  T   N
_Push_3_r][S N
S _Duplicate_top_(3_r)][S S T   T   S T S N
_Push_-10_e][S T    S S T   T   S N
_Copy_0-based_6th_(-79_space)][S S T    T   S N
_Push_-2_m][S S T   T   T   T   S N
_Push_-14_a][S S S T    T   N
_Push_3_r][S S T    T   S S S N
_Push_-8_g][S S S S (_Note_the_additional_S_here)N
_Push_0_o][S S S T  T   N
_Push_3_r][S S S T  N
_Push_1_p][S T  S S T   T   T   N
_Copy_0-based_7th_(-79_space)][S S S T  S S N
_Push_4_s][S S T    T   T   S N
_Push_-6_i][S S T   T   T   T   N
_Push_-7_h][S S T   T   T   S T T   N
_Push_-27_T][N
S S N
_Create_Label_LOOP][S S S T T   S T T   T   T   N
_Push_111][T    S S S _Add][T   N
S S _Print_as_character][N
S N
N
_Jump_to_Label_LOOP]

पत्र S(स्थान), T(टैब), और N(नई-पंक्ति) केवल हाइलाइटिंग के रूप में जोड़े गए।
[..._some_action]केवल स्पष्टीकरण के रूप में जोड़ा गया।

इस हाइलाइट किए गए संस्करण को आज़माएं।

व्हॉट्सएप एक स्टैक-आधारित भाषा है जो रिक्त स्थान, टैब और नई-लाइनों को छोड़कर सभी चीजों को अनदेखा करती है। यहाँ छद्म कोड में एक ही कार्यक्रम है:

Push all unicode values of "P: ecapsetihW tuo srorre margorp sihT", minus 111
Start LOOP
  Push 111
  Add the top two stack values together
  Print as character
  Go to the next iteration of the LOOP

जैसे ही यह सभी मानों को प्रिंट करने में त्रुटि करेगा और जब यह ऐड ( TSSS) करने की कोशिश करता है तो स्टैक खाली होता है , जिसके लिए स्टैक पर दो आइटम की आवश्यकता होती है।

मैंने इस जावा प्रोग्राम के111 साथ निरंतर उत्पन्न किया है , जिसका उपयोग मैंने पिछली ASCII से संबंधित चुनौतियों के लिए भी किया है जो मैंने व्हाट्सएप में बनाई है। इसके अलावा, मैंने बाइट्स को बचाने के लिए रिक्त स्थान के लिए कुछ प्रतियों का उपयोग किया है।

नोट करने के लिए एक महत्वपूर्ण बात यह है कि मैंने व्हाट्सएप उत्तर के भीतर जावा प्रोग्राम को रखने के लिए जिस चाल का उपयोग किया है। व्हॉट्सएप में किसी नंबर को कैसे धकेला जाए, यह बताकर मुझे शुरू करें:

Sशुरुआत में: स्टैक मैनिपुलेशन सक्षम करें;
S: संख्या के रूप में निम्नानुसार पुश करें;
Sया T: सकारात्मक या नकारात्मक क्रमशः;
कुछ Sऔर / या T, इसके बाद N: बाइनरी के रूप में संख्या, जहां T=1और S=0

यहाँ कुछ उदाहरण हैं:

  • मान 1 को धक्का देना होगा SSSTN;
  • मान को धक्का देना -1 होगा SSTTN;
  • मान को धक्का देना 111 होगा SSSTTSTTTTN
  • मान 0 धक्का किया जा सकता है SSSSN, SSTSN, SSSN, SSTN, SSSSSSSSSSSSN, आदि (जब आप का उपयोग SSSN(या SSTN), हम द्विआधारी हिस्सा निर्दिष्ट करने के लिए, की जरूरत नहीं है यह परोक्ष 0 है, क्योंकि उसके बाद हम अपने हस्ताक्षर कहा गया है।)

तो बस SSSNमूल्य को आगे बढ़ाने के लिए पर्याप्त है0 ( oइस मामले में पत्र के लिए उपयोग किया जाता है )। लेकिन, इस गोल्फ वाले व्हॉट्सएप प्रोग्राम में जावा प्रोग्राम को रखने के लिए, मुझे एक अतिरिक्त स्थान की आवश्यकता थी, इसलिए पहले दो oएस के साथ धक्का दिया जाता है SSSN, लेकिन तीसरे के साथ धक्का दिया जाता है SSSSN, इसलिए हमारे पास जावा प्रोग्राम की सजा के लिए पर्याप्त स्थान हैं।


10

सीबीएम बुनियादी और 6502 मशीन कोड (C64), 142 144 बाइट्स

सिंटैक्स त्रुटि का एहसास होने के बाद 2 बाइट्स जोड़ने की अनुमति नहीं थी ...।


.prgफ़ाइल का Hexdump :

01 08 50 08 00 00 8F 5A 49 52 49 41 A9 17 8D 18 D0 A2 30 BD 30 08 20 D2 FF E8
E0 4B D0 F5 A2 30 BD 05 08 20 D2 FF E8 E0 44 D0 F5 A9 0D 20 D2 FF A2 1A 4C 37
A4 22 36 35 30 32 20 4D 41 43 48 49 4E 45 20 43 4F 44 45 20 3A D0 22 20 20 20
20 20 00 8D 08 01 00 97 35 33 32 37 32 2C 32 33 3A 99 22 D4 48 49 53 20 50 52
4F 47 52 41 4D 20 45 52 52 4F 52 53 20 4F 55 54 20 49 4E 20 C3 C2 CD 2D C2 C1
D3 C9 C3 20 3A D0 22 2C 58 AD 50 00 00 00

C64 के संपादक के रूप में सूचीबद्ध CBM BASIC दृश्य :

0 remziriastepgosubinput#new0exp0 dim.clrsavekinput#stepnew0exp<white> dim.clrsavedinput#stepstep
 dim.newl7to"6502 machine code :P"
1 poke53272,23:print"This program errors out in CBM-BASIC :P",x/p

मूल सूची

ध्यान दें : बेसिक संपादक में इस कार्यक्रम को सही ढंग से दर्ज करना असंभव है। संपादित करने का भी प्रयासकरेंइस कार्यक्रम को बेसिक संपादक में , यह दुर्घटनाग्रस्त हो जाएगा। फिर भी, यह एक धमाकेदार बुनियादी कार्यक्रम है;)


6502 मशीन कोड दृश्य :

         01 08                          ; load address

.C:0801  50 08       BVC $080B          ; jump to real start of mc

         ; line number (00 00), REM (8F) and "ziria"
.C:0803  00 00 8F 5A 49 52 49 41

.C:080b  A9 17       LDA #$17
.C:080d  8D 18 D0    STA $D018          ; set upper/lower font
.C:0810  A2 30       LDX #$30
.C:0812  BD 30 08    LDA $0830,X
.C:0815  20 D2 FF    JSR $FFD2          ; print "This program errors ..."
.C:0818  E8          INX
.C:0819  E0 4B       CPX #$4B
.C:081b  D0 F5       BNE $0812
.C:081d  A2 30       LDX #$30
.C:081f  BD 05 08    LDA $0805,X
.C:0822  20 D2 FF    JSR $FFD2          ; print "6502 machine code :P"
.C:0825  E8          INX
.C:0826  E0 44       CPX #$44
.C:0828  D0 F5       BNE $081F
.C:082a  A9 0D       LDA #$0D
.C:082c  20 D2 FF    JSR $FFD2          ; print a newline
.C:082f  A2 1A       LDX #$1A           ; error code for "can't continue"
.C:0831  4C 37 A4    JMP $A437          ; jump to error handling routine

.C:0834  22 ; '"'

         ; "6502 machine code :P"
.C:0835  36 35 30 32 20 4D 41 43 48 49 4E 45 20 43 4F 44 45 20 3A D0

         ; '"', some spaces, and next BASIC line
.C:0849  22 20 20 20 20 20 00 8D 08 01 00 97 35 33 32 37 32 2C 32 33 3A 99 22

         ; "This program errors out in CBM-BASIC :P"
.C:0860  D4 48 49 53 20 50 52 4F 47 52 41 4D 20 45 52 52 4F 52 53 20 4F 55 54
.C:0877  20 49 4E 20 C3 C2 CD 2D C2 C1 D3 C9 C3 20 3A D0

.C:0887  22 2C 58 AD 50 00 00 00

ऑनलाइन डेमो ,runबुनियादी के रूप में चलाने के लिए,sys 2049 मशीन कोड के रूप में चलाने के लिए, listइसे BASIC कोड के रूप में व्याख्या करने के लिए।

आधार के रूप में चल रहा है division by zero error in 1, मशीन कोड के रूप में चल रहा है , एक का उत्पादन करता हैcan't continue error

स्क्रीनशॉट


स्पष्टीकरण:

किसी .prgफ़ाइल के पहले दो बाइट्स छोटे एंडियन में लोड एड्रेस हैं, यह यहाँ $0801(दशमलव 2049) है, जो कि C64 पर BASIC प्रोग्राम के लिए स्टार्ट एड्रेस है। runइस कार्यक्रम को BASIC दुभाषिया में शुरू करता है, जबकि sys 2049पते पर मशीन कोड प्रोग्राम चलाने की आज्ञा है 2049

जैसा कि आप देख सकते हैं, बेसिक दृश्य में पहली पंक्ति एक टिप्पणी है (rem ) है जिसमें "कचरा" और आवश्यक आउटपुट स्ट्रिंग का हिस्सा है। यह मशीन कोड प्रोग्राम और कुछ फिलर बाइट्स है। आप वहां कुछ "रैंडम" बेसिक कमांड्स देखते हैं क्योंकि सीबीएम-बेसिक प्रोग्राम्स में सिंगल बाइट वैल्यू के रूप में "टोकेनाइज्ड" कमांड होते हैं और इनमें से कुछ वैल्यू मशीन कोड में इस्तेमाल होने वाले ऑपकोड के समान होती हैं। मशीन कोड अपने आउटपुट के लिए कोड की दूसरी पंक्ति में मौजूद स्ट्रिंग का पुन: उपयोग करता है।

बुनियादी कार्यक्रम की एक पंक्ति के पहले दो बाइट्स यहां अगली पंक्ति के लिए एक पॉइंटर हैं $0850। यह सावधानी से चुना गया है क्योंकि 50 08ओवरफ्लो झंडा सेट नहीं होने पर भी अगले 8 बाइट्स पर कूदने वाली 6502 शाखा निर्देश है - इसका उपयोग मशीन कोड के रूप में निष्पादित होने पर इस "टिप्पणी" लाइन के बीच में कहीं कूदने के लिए किया जाता है। 50, यहां इस्तेमाल किया opcode है तो दूसरी लाइन पर शुरू करने के लिए है 0850काम करने के लिए चाल के लिए। इसलिए आपको 20भरने के लिए 5 बाइट्स (अंतरिक्ष वर्ण) का अनुक्रम दिखाई देता है । मशीन कोड सक्रिय रूप से "त्रुटि जारी नहीं रख सकता" देने के लिए रॉम त्रुटि से निपटने के लिए नियमित रूप से कूदता है।

बुनियादी कोड बहुत सीधा है; "प्रिंट" करने के लिए एक दूसरे तर्क के रूप में, दो असंवैधानिक चर ( 0सीबीएम बेसिक में एक मूल्य वाले ) को विभाजित किया जाता है, जो "विभाजन बाय जीरो" त्रुटि को ट्रिगर करता है।


2
आप, सर, एक रियल प्रोग्रामर हैं। आप इसके साथ कैसे आए? अटारी प्रोग्रामिंग?
ओरियन

@ ओरियन धन्यवाद :) मूल रूप से, मैंने दूसरी लाइन के साथ शुरू किया, जो सामान्य BASIC के रूप में दर्ज किया गया, इसे मशीन कोड मॉनिटर के वाइस (एमुलेटर) में इस्तेमाल करने के तरीके से बाहर कर दिया, मशीन कोड को सीधे रैम में असेंबल किया और मैन्युअल रूप से लाइन पॉइंटर्स की मरम्मत की मूल कार्यक्रम ...
फेलिक्स पालमेन

9

> <> और फू , 42 बाइट्स

#o<"This code errors in "p"Foo"'><>'" :P"/

इसे> <> में आज़माएँ!

फू में कोशिश करो!

फू सब कुछ प्रिंट "करता है, जैसा कि अच्छी तरह से प्रलेखित है, और अंत में शून्य से विभाजित करने की कोशिश करता है। यह अनदेखी करता है '><>'

><>स्टैक के लिए "फू" को धक्का देता है, लेकिन तुरंत इसका उपयोग करके पॉप करता है p। इसके बाद स्टैक के लिए सब कुछ प्रिंट करता है इसके साथ #o<बाहर निकलता है जब स्टैक एकमात्र त्रुटि संदेश के साथ खाली होता है जिसे वह जानता है,something smells fishy...


त्रुटि का कारण महत्वपूर्ण है, त्रुटि संदेश नहीं। एसोलंग पृष्ठ पर ><>त्रुटि कारणों की एक सूची है, इसलिए मेरा मानना ​​है कि आपको उनमें से एक को निर्दिष्ट करना चाहिए, न कि something smells fishy...
बुबलर

2
@ बब्बल त्रुटि एक खाली स्टैक से पॉपिंग के कारण होती है।
फल

3
pपॉप Fooका उपयोग करना बहुत चालाक है!
फल

6

सी और पायथन, 126 116 बाइट्स

-10 बाइट्स @Bubbler को धन्यवाद!

#1/*
-print("This program errors out in Python :P")
'''*/
main(c){c=puts("This program errors out in C :P")/0;}//'''

पायथन प्रिंट में () कोई नहीं है, इसलिए इसके नकारात्मक को प्राप्त करने की कोशिश करने का कोई मतलब नहीं है, इसलिए पायथन एक त्रुटि फेंकता है।

सी प्रिंटफ में () एक इंट रिटर्न देता है, इसलिए इसे शून्य से विभाजित करना एक फ्लोटिंग पॉइंट अपवाद है।

इसे C में आज़माएं!
इसे पायथन में आज़माएं!


1
आप पायथन में -print(...)एक का उपयोग करने के लिए उपयोग कर सकते हैं TypeError, और फिर आप सी में फ्लोटिंग पॉइंट एरर (शून्य से विभाजन) बनाने के लिए स्वतंत्र हैं। कुछ निरर्थक समाचारों के साथ संयुक्त, यहां 116 बाइट्स ( पायथन , सी ) हैं।
बुबलर

5

अताशे + वुल्फ्राम भाषा (गणितज्ञ) , 82 बाइट्स

s:="Attache"
s=" Mathematica "
Throw[Print["This program errors out in",s,":P"]-0]

ऑनलाइन प्रयास करें! ऑनलाइन गणित की कोशिश करो!

यह =दो भाषाओं में ऑपरेटर के अर्थ पर आधारित है । Attache में, यह समानता के लिए तुलना करता है, लेकिन Mathematica में, यह चर असाइनमेंट करता है। :=दोनों भाषाओं में चर असाइनमेंट करता है।

अब, अटैच में, Printमुद्रित स्ट्रिंग्स की एक सरणी देता है, और स्ट्रिंग्स और पूर्णांक (क्रमशः, 0) के साथ घटाव संभव नहीं है । तो, एक प्रकार की त्रुटि फेंक दी जाती है। Mathematica में, Printरिटर्न Null, और Mathematica उससे ठीक-ठीक घटाते हैं 0। लेकिन, हम मैन्युअल रूप से Throwएक nocatchत्रुटि देते हुए , उस अशक्त को फेंक देते हैं ।


ध्यान दें: यह बग के कारण अटैची के वर्तमान संस्करणों के लिए काम नहीं करता है। मैं उस जल्द से जल्द ठीक करने की कोशिश करूँगा
कॉनर ओ'ब्रायन

5

अजगर (2) और QB64 , 82 बाइट्स

1#DEFSTR S
s="QB64"
'';s="Python"
print"This program errors out in "+s+" :P"
CLS-1

पायथन संस्करण का परीक्षण करने के लिए, आप इसे ऑनलाइन आज़मा सकते हैं ! QB64 संस्करण का परीक्षण करने के लिए, आपको QB64 डाउनलोड करना होगा।

अजगर क्या देखता है

1#DEFSTR S
s="QB64"
'';s="Python"
print"This program errors out in "+s+" :P"
CLS-1

पहली पंक्ति सिर्फ नंगे अभिव्यक्ति 1(एक नो-ऑप) है जिसके बाद एक टिप्पणी है।

दूसरी पंक्ति sस्ट्रिंग पर सेट होती है "QB64", लेकिन तीसरी पंक्ति तुरंत इसे बदल देती है "Python"। चौथी पंक्ति के अनुसार संदेश प्रिंट करता है।

पांचवीं पंक्ति एक और नंगी अभिव्यक्ति है, लेकिन यह NameErrorअपरिभाषित नाम के कारण उठती है CLS

QB64 क्या देखता है

1#DEFSTR S
s="QB64"
'';s="Python"
print"This program errors out in "+s+" :P"
CLS-1

पहली पंक्ति, क्रमांकित 1#, प्रत्येक चर को परिभाषित करती है जिसका नाम Sस्ट्रिंग चर के रूप में (केस-असंवेदनशील) से शुरू होता है । इसका मतलब है कि हमें उपयोग करने की आवश्यकता नहीं है s$, जो कि पायथन में एक वाक्यविन्यास त्रुटि होगी।

दूसरी पंक्ति sस्ट्रिंग पर सेट होती है "QB64"'QB64 में एक टिप्पणी शुरू करता है, इसलिए तीसरी पंक्ति कुछ भी नहीं करती है। चौथी पंक्ति के अनुसार संदेश प्रिंट करता है।

पांचवीं पंक्ति CLSएक तर्क के साथ (स्पष्ट स्क्रीन) की कोशिश करती है -1। लेकिन चूंकि CLSकेवल के तर्कों को स्वीकार करता है 0, 1या 2, यह त्रुटि पैदा करता है Illegal function call। त्रुटि उपयोगकर्ता से पूछते हुए एक संवाद बॉक्स बनाता है यदि वे निष्पादन या निरस्त करना चाहते हैं। तकनीकी रूप से, इसका मतलब यह है कि त्रुटि घातक नहीं है (इस मामले में, आप "निष्पादन जारी रख सकते हैं" और कार्यक्रम बस आगे की समस्याओं के बिना समाप्त होता है); लेकिन ओपी ने स्पष्ट रूप से उन भाषाओं की अनुमति दी है जो एक त्रुटि के बाद जारी रख सकते हैं, इसलिए QB64 का व्यवहार ठीक होना चाहिए।


3

पर्ल 5 और जावास्क्रिप्ट (Node.js) , 96 बाइट्स

eval("printf=console.log");printf("This program errors out in %s :P",("Perl","JavaScript"));$//0

यह इस तथ्य का उपयोग करता है कि (...)पर्ल में एक सूची है जो printfसबसे बाईं ओर के तत्व का उपयोग करेगी और तथ्य यह है कि यह जावास्क्रिप्ट में अल्पविराम ऑपरेटर है, जो सबसे सही तर्क लौटाएगा।

$JavaScript में परिभाषित नहीं होने के कारण Perl में शून्य त्रुटि और एक ReferenceError के कारण विभाजन होता है ।

ऑनलाइन पर्ल की कोशिश करो!

जावास्क्रिप्ट ऑनलाइन की कोशिश करो!


3

ऑक्टेव और MATLAB, 67 बाइट्स

v=ver;disp(['This program errors out in ' v(1).Name ' :P']);v(--pi)

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

नोट: कोड मानता है MATLAB बिना टूलबॉक्स (या स्थापित किए गए किसी भी टूलबॉक्स के नाम अक्षर A से M तक शुरू नहीं होते हैं) के साथ स्थापित किया गया है।

यह काम किस प्रकार करता है:

कोड को दुभाषिया और टूलबॉक्स के उपयोग के लिए संस्करण डेटा मिलता है verv(1).Nameपहले उत्पाद का नाम चल रहा है , यह Octaveया तो वापस आ जाएगा या MATLABऊपर दिए गए नोट को सही मान लेगा ।

कार्यक्रम तब आवश्यक स्ट्रिंग को प्रदर्शित करेगा, आवश्यकता के साथ Octaveया पूर्ण MATLAB

अंत में हम करते हैं v(--pi)

ऑक्टेव में, --पूर्व-डिक्रीमेंट ऑपरेटर है। जैसे कि यह पूर्व-क्षरण का प्रयास करता है जो कि विफल रहता है क्योंकि चर piमौजूद नहीं है ( piवास्तव में कार्य है, चर नहीं है)।

This program errors out in Octave :P
error: in x-- or --x, x must be defined first

MATLAB में, पूर्व-डिक्रीमेंट ऑपरेटर मौजूद नहीं है। जैसा कि इस कथन की व्याख्या की गई है v(-(-pi))जो कि बस के बराबर है v(pi)। हालाँकि pi, एक पूर्णांक नहीं है, इसलिए इसे अनुक्रमणिका में उपयोग नहीं किया जा सकता हैv त्रुटि देते हुए, सरणी ।

This program errors out in MATLAB :P
Subscript indices must either be real positive integers or logicals.

3

C ++ 14 (gcc) / C ++ 17 (gcc) , 107 105 बाइट्स

#include<cstdio>
int*p,c=*"??/0"/20;int
main(){*p=printf("This program errors out in C++ 1%d :P",4+c)/c;}

इसे ऑनलाइन आज़माएं! (सी ++ 14)

इसे ऑनलाइन आज़माएं! (सी ++ 17)


मानता है कि वैश्विक नामस्थान (इसके अलावा ) में <cstdio>घोषणा करता printfहै stdऔर यह कि बुनियादी निष्पादन वर्ण सेट ASCII मूल्यों का उपयोग करता है, जो दोनों लिनक्स पर g ++ का उपयोग करते हुए सच हैं।

यहां मूल पकड़ यह है कि C ++ 17 भाषा से ट्रिगर समाप्त हो गया है।

C ++ 14 में, "??/0"एक ट्रिग्राफ शामिल है और इसके बराबर है "\0"। तो *"??/0"शून्य है, और शून्य cपर सेट है। संख्या 4 को एक तर्क के रूप में पारित किया जाता है printf, फिर विभाजन द्वाराc अपरिभाषित व्यवहार का कारण बनता है। लिनक्स पर, यह *pतस्वीर में आने से पहले होता है , और प्रोग्राम को ए SIGFPE

C ++ 17 में, "??/0"लंबाई 4 स्ट्रिंग है जो कि प्रतीत होती है। तो *"??/0"है '?'या 63, और c3. नंबर 7 के लिए एक तर्क के रूप पारित हो जाता है करने के लिए सेट कर दिया जाता printfहै, और इस समय तक विभाजन cवैध है। चूंकि pएक नाम स्थान का सदस्य है, इसलिए यह कार्यक्रम की शुरुआत में शून्य-प्रारंभिक हो जाता है और इसमें एक शून्य सूचक मूल्य होता है, इसलिए *pअपरिभाषित व्यवहार होता है। लिनक्स पर, क्योंकि प्रोग्राम पता शून्य पर मेमोरी को संशोधित करने का प्रयास करता है, प्रोग्राम को ए SIGSEGV


mainवापसी प्रकार छोड़ा जा सकता है, इसलिए -3 बाइट्स।
मैक्स येखलाकोव

2

पर्ल ५ और पर्ल 6 , 55 बाइट्स

say('This program errors out in Perl ',5-~-1,' :P').a/0

ऑनलाइन पर्ल 5 की कोशिश करो! (शून्य से अवैध विभाजन)

ऑनलाइन पर्ल 6 की कोशिश करो! (ऐसी कोई विधि नहीं)

उपसर्ग ~पर्ल 6 में कठोरता है और अनिवार्य रूप से उपरोक्त कार्यक्रम में एक ऑप-ऑप है। पर्ल 5 में, यह बिटवाइज़ नहीं है, -1 से 0 में परिवर्तित होता है।

. विधि 6 में पर्ल कॉल सिंटैक्स और पर्ल 5 में संयोजन है।


2

सी (जीसीसी) / स्टेक्स , 109 बाइट्स

AA=~1;
	char* s;main(){*(int*)(printf("%s C :P",s))=0;}char* s=
"This program errors out in";;;/*dp`UGYC\`Q*/

इसे ऑनलाइन आज़माएं! (C) (जीसीसी)

इसे ऑनलाइन आज़माएं! (स्टेक्स) या भागो और डिबग करें! (Stax)

सी। में सैगफॉल्ट। स्टेक्स में अमान्य ऑपरेशन। मैं प्यार करता हूँ कि कैसे सब कुछ है कि एक टिप्पणी नहीं है वास्तव में Stax में प्रयोग किया जाता है।

सी

इस तरह C इसे देखता है। पहली पंक्ति नो-ऑप है। दूसरी पंक्ति संदेश को प्रिंट करती है printfऔर उसके बाद segfaults के साथ संदेश भेजती है =0

AA=~1;
	char* s;main(){*(int*)(printf("%s C :P\n",s))=0;}char* s=
"This program errors out in";;;/*dp`UGYC\`Q*/

Stax

जब भी यह खाली स्टैक से पॉप या झांकने की कोशिश करता है, तब स्टैक्स प्रोग्राम समाप्त हो जाता है। यह इसे थोड़ा मुश्किल बना देता है और हमें एक स्टैक तैयार करना होगा जो खाली नहीं है। AA=~1;सी में मान्य कथन शेष रहते हुए ऐसा करता है।

AA=~1;
AA=       10=10, returns a 1
   ~      Put it on the input stack
    1     Pushes a 1 to main stack (*)
     ;    Peek from the input stack (**)

वास्तव में उपयोगी क्या है ~, यह एक गैर-खाली इनपुट स्टैक तैयार करता है ताकि ;कार्यक्रम से बाहर निकलने के बिना निष्पादित किया जा सके। हालांकि, 1मुख्य स्टैक पर दो एस का उपयोग बाद में भी किया जाता है।

दूसरी पंक्ति एक टैब से शुरू होती है और स्टैक्स में एक पंक्ति टिप्पणी शुरू करती है।

"...";;;/*dp`UGYC\`Q*/
"..."                     "This program errors out in"
     ;;;                  Peek the stack three times so that we have enough operands for the next two operations
        /                 Divide, this consumes one element of the main stack
         *                Multiply, this consumes another element
          d               Discard the result, now the TOS is the string
           p              Pop and print without newline
            `UGYC\`       Compressed string literal for " Stax :P"
                   Q      Print and keep the string as TOS
                    *     Duplicate string specific times
                          Since the element under the top of stack is `1` that was prepared in (**), this does nothing
                     /    Invalid operation error

अमान्य ऑपरेशन /टीओएस (2 1वां ऑपरेंड) के रूप में एक स्ट्रिंग के लिए ऑपरेशन करने की कोशिश कर रहा है और (*) से संख्या 1 ऑपरेंड के रूप में, जो अमान्य है।

यदि दो ऑपरेंड की अदला-बदली हो जाती है, तो यह स्टैक्स में एक वैध ऑपरेशन होगा।


2

जेली और एम , 39 बाइट्स

İ=`ị“¢³ƥ“Ȥ¹»;“ :P”“¢ḅñ⁵ẹḞŀẊịñṙȧṄɱ»;ȮṠṛƓ

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

इसे M में आज़माएं!

दोनों भाषाओं में उलटा लागू होता İहै 0जिसके परिणामस्वरूप infजेली और zooएम के लिए मुझे पता नहीं क्योंzoo एम। डेनिस में अनन्तता का प्रतिनिधित्व करता है।

महत्वपूर्ण अंतर यह है कि जेली की अनंतता स्वयं के बराबर है जबकि एम की अनंतता नहीं है। इस प्रकार "खुद के बराबर है" जेली और एम में =`पैदावार यहाँ से:10

İ=`ị“¢³ƥ“Ȥ¹»;“ :P”“¢ḅñ⁵ẹḞŀẊịñṙȧṄɱ»;ȮṠṛƓ
İ=`                                      0 in M, 1 in Jelly
    “¢³ƥ“Ȥ¹»                             Pair of compressed strings: [' M',' Jelly']
   ị                                     Index into this list with 0 or 1
            ;“ :P”                       Concatenate with the string ' :P'
                  “¢ḅñ⁵ẹḞŀẊịñṙȧṄɱ»       Compressed string: 'This program errors in'
                                  ;      Prepend this to ' Jelly/M :P'
                                   Ȯ     Print the string and return it
                                    Ṡ    Sign. M errors with a string as input and terminates
                                         Jelly returns a list of Nones
                                     ṛ   Right argument. This prevents the list of Nones from being printed
                                      Ɠ  Read a single line from input. Since input is not allowed, this produces an EOFError

जेली की त्रुटि है EOFError: EOF when reading a line

एम की त्रुटि है TypeError: '>' not supported between instances of 'str' and 'int'


1
तुम भी दो esolangs में यह कैसे करना शुरू करते हैं?
मैजिक ऑक्टोपस Urn

2

फू / सीजेएम , 51 50 बाइट्स

"This program errors out in ""Foo"/'C'J'a'm" :P"Li

यह फू में एक विभाजन-दर-शून्य त्रुटि के साथ बाहर निकलता है, और ए NumberFormatException सीजाम में।

CJam को:

  • एक स्ट्रिंग शाब्दिक (उद्धरण के बीच) खुद को स्टैक में धकेलता है। जब कार्यक्रम समाप्त हो जाता है तो स्टैक से आइटम स्वचालित रूप से एक विभाजक के बिना मुद्रित होते हैं।
  • /स्ट्रिंग This program errors out in को स्ट्रिंग पर विभाजित करने का प्रयास करता हैFoo । चूंकि स्ट्रिंग में सबस्ट्रिंग नहीं है, इसलिए यह एक सिंगलटन सरणी देता है जिसमें मूल स्ट्रिंग होती है, जो बिल्कुल उसी तरह प्रदर्शित होती है।
  • 'x के लिए एक चरित्र शाब्दिक है x , जिसे एक-वर्ण स्ट्रिंग के समान मुद्रित किया जाता है। इस तरह, हम CJam के लिए डेटा को धक्का दे सकते हैं जिसे फू द्वारा अनदेखा किया गया है (मुझे नहीं पता है कि फू में निष्पादित नहीं होने वाला लूप कैसे बनाया जाए)।
  • Liखाली स्ट्रिंग को पूर्णांक में डालने का प्रयास करता है, जो विफल हो जाता है। स्टैक से सब कुछ मुद्रित होता है।

फू को:

  • एक स्ट्रिंग शाब्दिक (उद्धरण के बीच) खुद को प्रिंट करता है।
  • /वर्तमान सेल को शीर्ष स्टैक तत्व (जो एक निहित है 0) द्वारा विभाजित करने की कोशिश करता है । किसी कारण से, फूट-दर-0 त्रुटियां फू में घातक नहीं हैं, इसलिए यह संदेश को प्रिंट करता है
    Only Chuck Norris can divide by zero.
    STDERR के लिए और जा रहा रहता है।
  • अपरिचित वर्णों ( 'C'J'a'mऔर Li) को अनदेखा किया जाता है।

2
क्या बाद के 50 बाइट्स नहीं हैं?
बुबलर

@ बब्लर ने संपादित करना भूल गया, क्षमा करें।
बजे फल

7
मुझे लगता है कि फू दुभाषिया में एक बग है। यह स्पष्ट रूप से Only Jon Skeet can divide by zero. meta.stackexchange.com/a/9138 के

2

अजगर और लूआ , 111 110 102 98 95 85 बाइट्स

x="This program errors out in ",#[[
print(x[0]+"Python :P")
a#]]z=#print(x.."Lua :P")

त्रुटियां: पायथन 3:

Traceback (most recent call last):
  File ".code.tio", line 3, in <module>
    a#]]z=#print(x.."Lua :P")
NameError: name 'a' is not defined

लुआ:

lua: .code.tio:3: attempt to get length of a nil value
stack traceback:
    .code.tio:3: in main chunk
    [C]: in ?

स्पष्ट रूप से अलग।

कई मतभेदों का दुरुपयोग:

  • <var>=<a>,<b>,... पायथन में एक टपल बनाता है, लेकिन लुआ में यह एक तर्क सूची बनाता है, जिसमें से केवल पहला सदस्य लिया जाता है।
  • #पायथन में एक टिप्पणी शुरू करता है, लेकिन लुआ में लंबाई ऑपरेटर है। ट्यूपल्स को अल्पविराम में समाप्त करने की अनुमति देने के लिए पायथन को अतिरिक्त सहारा देता है।
  • [[...]]लुआ का बहु-तार स्ट्रिंग सिंटैक्स है, जिसका अर्थ है कि यह पायथन के प्रिंट फ़ंक्शन को भी नहीं देखता है; यह लुआ के कारण ..स्ट्रिंग संघनन के लिए उपयोग करने के लिए आवश्यक है और नहीं+
  • देखने के बाद अजगर त्रुटियों a, एक अपरिभाषित चर; लूआ के बाद z=#print(x.."Lua :P")। सिर्फ #print(x.."Lua :P")लुआ का उपयोग करने से काम नहीं चलता, क्योंकि कोड को निष्पादित करने से पहले एक त्रुटि हो जाती है।

संपादन:

  • "".joinपायथन में उपयोग करने की आवश्यकता नहीं , -1 बाइट
  • xदोनों भाषाओं में एक स्ट्रिंग बनाएं और Pythonप्रिंट फ़ंक्शन में एक स्ट्रिंग शाब्दिक जगह दें , -8 बाइट्स
  • का उपयोग करते हुए और -4 बाइट्स #[[]]से कम है#""--[[]]
  • #1तालिका कुंजी के रूप में उपयोग करने की आवश्यकता नहीं है , -3 बाइट्स
  • जो राजा किया इस , -9 बाइट्स
  • print(x.."Lua :P")काम के वापसी मूल्य की लंबाई लेते हुए , जाहिरा तौर पर; -1 बाइट


2

जावा और सी # 242 235

/**\u002f/*/using System;/**/class G{public static void/**\u002fmain/*/Main/**/(String[]a){String s="This program errors out in ";/**\u002fSystem.out.print(s+"Java :P");/*/Console.Write(s+"C# :P")/**/;s=/**\u002f(1/0)+""/*/a[-1]/**/;}}

जावा और C # के बीच अलग-अलग भागने से बचना \u0027 जादू है, बाकी कुछ "टॉगल-कमेंट्स" हैं

संपादित करें: @ केविनक्रूजसेन के एक सूचक के लिए 8 बाइट्स के लिए बंद गोल्फ

संपादित करें: नियम निर्धारित किया गया है


आप गोल्फ 6 दोनों बदलकर बाइट्स कर सकते हैं Stringमें var(जावा 10 का समर्थन करता है इस)। (या 5 बदलकर String s="...";करने String s="...",x;और निकालने Stringके सामने x=जावा 9 या उससे पहले में)।
केविन क्रूज़सेन

1
एस-स्ट्रिंग कार्यों का पुन: उपयोग करना, java99 के लिए और पहले भी। @ केविनक्रूजसेन
मास्टरएक्स २४४

2

AutoHotKey / C #, 155 133 128 122 बाइट्स

सिंटैक्स हाइलाइटिंग मुझे बताती है कि यह बेहतर है:

C # RuntimeBinderException: 'नॉन-डेलीगेट टाइप नहीं लागू कर सकते'

;dynamic
i="This program errors out in " ;Console.Write(i+"c# :P");i();/*
i:=SubStr(i,2,27)
send %i%AutoHotkey :P
Throw */

AutoHotkey त्रुटि: एक अपवाद फेंक दिया गया था।

;dynamic
i="This program errors out in " ;Console.Write(i+"c# :P");i();/*
i:=SubStr(i,2,27)
send %i%AutoHotkey :P
Throw */

संपादन:

  1. एक संस्करण निकाल दिया
  2. -5 बाइट्स दूध के लिए धन्यवाद

2
यहाँ C # में फेंकने के लिए थोड़ा कम अपवाद है i+=i[-1]:। System.IndexOutOfRangeException: 'सूचकांक सरणी की सीमा के बाहर था।'
दूध

2
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException के dynamicबजाय उपयोग करने varऔर फेंकने के लिए अभी भी थोड़ा कम है : 'गैर-प्रतिनिधि प्रकार को लागू नहीं कर सकता' i()
दूध

2

PHP 7+ / जावास्क्रिप्ट, 90 89 बाइट्स

यह बहुत ही समान वाक्यविन्यास के साथ 2 भाषाओं का उपयोग करता है, इस कोड को दोनों भाषाओं पर लिखने की अनुमति देता है।

भाषा पृथक्करण जावास्क्रिप्ट में मौजूद नहीं एक संपत्ति द्वारा किया जाता है: पीएचपी [](खाली सरणी) को एक मिथ्या मान मानता है जबकि यह जावास्क्रिप्ट में सत्य है (क्योंकि यह एक वस्तु है और ऑब्जेक्ट हमेशा सत्य होते हैं , यहां तक ​​कि new Boolean(false))।

$X='This program errors out in %s :P';([]?console.log($X,'JavaScript'):printf($X,PHP))();


निष्पादन:

कोड के निम्नलिखित टुकड़े पर ध्यान दिया जाएगा ([]?console.log($X,'JavaScript'):printf($X,PHP))();:।

स्ट्रिंग एट्रिब्यूशन दोनों भाषाओं में समान काम करता है।

यह कोड "टर्नरी ऑपरेटर" ( जावास्क्रिप्ट , पीएचपी) का उपयोग करता है ) का करता है, जो दोनों भाषाओं में ज्यादातर एक ही तरह से काम करता है।

जावास्क्रिप्ट

जावास्क्रिप्ट console.log($X,'JavaScript')टुकड़ा चलाएगा , जो रिटर्न करता है undefined

बाद में, जब आप निष्पादित करने का प्रयास करते हैं, तो आपको (...)()एक Uncaught TypeError: (intermediate value)(intermediate value)(intermediate value) is not a function(Google क्रोम में) मिलता है।

पीएचपी

PHP printf($X,PHP)टुकड़ा निष्पादित करेगा ।

PHP में, printfफ़ंक्शन आउटपुट की लंबाई लौटाता है

PHP की एक दिलचस्प कार्यक्षमता है: यह उन कार्यों को निष्पादित कर सकता है जिनका नाम एक चर में संग्रहीत है (या, PHP7 के बाद से, एक अभिव्यक्ति के परिणाम के रूप में), जो एक वाक्यविन्यास त्रुटि को रोकता है।

PHP तब फ़ंक्शन को चलाने की कोशिश करेगा जिसका नाम अभिव्यक्ति का परिणाम है []? ... :printf($X,PHP)(जो संख्या है 33)।
लेकिन उस दिलचस्प कार्यक्षमता में एक चेतावनी है: केवल तार (डुह!) को स्वीकार करता है।

यह एक का कारण बनता है Fatal error: Function name must be a string, क्योंकि 33एक है int


मुझे 1 बाइट बचाने के लिए शायरु असाकोतो का धन्यवाद !


1
[]की तुलना में कम है '0'और जेएस और पीएचपी में भी अलग-अलग मूल्यांकन किया जाता है, इसलिए शायद यहां -1 बाइट?
शायरु असकोतो

मुझे लगता है कि इस मुद्दे को, जहां के साथ सवालों के बहुत सारे है []के बजाय प्रयोग की जाने वाली जरूरतों '0', '\0', '\0'=="0", और कहा कि इस्तेमाल किया []से पहले भी। लेकिन इस सवाल का जवाब देने के लिए धन्यवाद।
इस्माइल मिगुएल

1

पर्ल 5 और सी, 95 बाइट्स

//;$_='
main(){puts(puts("This program errors out in C :P"));}//';/T.*n /;print$&,"perl :P";die

//; मूल रूप से पर्ल में एक एनओपी है, और सी में एक टिप्पणी है।

तो सी कार्यक्रम प्रभावी रूप से है:

main(){puts(puts("This program errors out in C :P"));}

जो आवश्यक स्ट्रिंग को प्रिंट करता है, फिर चलाने की कोशिश करता है puts(32)। यह तकनीकी रूप से C में अपरिभाषित व्यवहार है, लेकिन यह TIO पर एक विभाजन दोष का कारण बनता है और मेरे पास हर प्रणाली है।

पर्ल प्रोग्राम पूरे C प्रोग्राम को एक स्ट्रिंग के रूप में मानता है, /T.*n /मैच करने के लिए regex का उपयोग करता है This program errors out inऔर फिर प्रिंट करता है और perl :Pdieप्रोग्राम को त्रुटि के साथ क्रैश करने का कारण बनता है Died at script_name line 2

यदि आपको त्रुटि के रूप में पसंद नहीं है, 1/0तो वही लंबाई है और Illegal division by zeroत्रुटि के साथ क्रैश होता है । मुझे dieऔर अधिक पसंद है ;)

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

इसे ऑनलाइन आज़माएं! (पर्ल)


1

VBScript, JScript, 72 बाइट्स

x="VB"
'';x='J'
WScript.echo("This program errors out in "+x+"Script")
y

VBScript "Microsoft VBScript रनटाइम त्रुटि: प्रकार बेमेल: 'y'
प्रिंट करेगा " JScript प्रिंट करेगा "Microsoft JScript रनटाइम त्रुटि: 'y' अपरिभाषित है"


1

जावास्क्रिप्ट और पायथन 3, 105 91 बाइट्स

NameError: name 'console' is not definedपायथन 3 में त्रुटियां

a="This program errors out in %s :P"
1//2;print(a%"Python 3")
console.log(a,"JavaScript")()

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

... और TypeError: console.log(...) is not a functionजावास्क्रिप्ट में।

a="This program errors out in %s :P"
1//2;print(a%"Python 3")
console.log(a,"JavaScript")()

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


1

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

class P{P(){var s="This program errors out in ";try{System.out.printf("%sJava :P",s);}finally{if(1!='1'){var a=0/0;}throw new Error(s+"JavaScript :P");}}}

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

इसे ऑनलाइन आज़माएं! (जावास्क्रिप्ट)

जावा में आउटपुट:

This program errors out in Java :P
Exception in thread "main" java.lang.ArithmeticException: / by zero
    at P.(Main.java:1)

जावास्क्रिप्ट में उत्पादन (stderr के लिए):

Error: This program errors out in JavaScript :P
    at P (/home/runner/.code.tio:1:185)

यह जावा स्क्रिप्ट के कमजोर टाइपिंग (का लाभ लेता है 1=='1'भाषा का पता लगाने के लिए), और जावा और जावास्क्रिप्ट (में एक ही कीवर्ड var, class), और इसी तरह त्रुटि कंस्ट्रक्टर्स ( new Error()) बहुभाषी बनाने के लिए।


1

PowerShell v6 और PowerShell v2, 73 बाइट्स

"This errors out in PowerShell v$($PSVersionTable.PSVersion) :P"
1-shl1/0

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

यह v2 पर पार्सिंग त्रुटि को फेंक देगा क्योंकि -shlv3 में पेश किया गया था। v3 + तब 0 से विभाजित करने का प्रयास करने से पहले मूल्य को सही ढंग से स्थानांतरित करने में सक्षम होगा, आसानी से एक डिवीजन-बाय-जीरो त्रुटि को फेंक देगा। दोनों संस्करणों में $ PSVersionTable हैशमैप है जिसमें PSVersionफ़ील्ड शामिल है


0

Mac (160) पर Linux / C (gcc) पर C (gcc)

#include <sys/utsname.h>
main(){struct utsname n;float g;uname(&n);printf("This program errors out in C(gcc) on %s :P\n",n.sysname);g=1/(int)gamma(1);abort();}

मैक पर अनछुए; मूल रूप से, जॉन कुक ने ( अपने ब्लॉग में ) बताया कि POSIX गामा को परिभाषित नहीं करता है; लिनक्स गामा फ़ंक्शन के लॉग का उपयोग करता है (लॉग (गामा (1)) 0 लौटेगा जो फ्लोटिंग पॉइंट अपवाद ट्रिगर करेगा); OSX "ट्रू" गामा फ़ंक्शन का उपयोग करता है, (जिसे आधिकारिक तौर पर टॉगमा प्रति पोस्की कहा जाता है); यह 1 रिटर्न जो बाद में गर्भपात के बयान से टकराएगा; मैंने इसे एक अलग फ़्लोटिंग पॉइंट एरर फेंकने के लिए प्राप्त करने की कोशिश की (जैसे sqrt (-1) लेकिन मैं यह भूल रहा हूँ कि उस थ्रो को कैसे फेंका जाए बनाम सिर्फ शून्य पर वापस जाएँ)


0

पर्ल, बैश (78 बाइट्स)

printf "This program errors out in ";eval 'echo Bash :P'||print"Perl :P
";
a()

पर्ल में आउटपुट:

This program errors out in Perl :P
Undefined subroutine &main::a called at /tmp/perlbash line 3.

बाश में उत्पादन:

This program errors out in Bash :P
/tmp/perlbash: line 4: syntax error: unexpected end of file

(ध्यान दें कि बैश वास्तव में line 4त्रुटि प्रदर्शित कर रहा है, इस तथ्य के बावजूद कि पंक्ति 3 एक पंक्ति फ़ीड के साथ समाप्त नहीं होती है ...)



0

सी (जीसीसी) और हास्केल , 135 बाइट्स

char/*x=0-- */*
s="This program errors out in ";
int main(){--s;*s=printf("%sC :P",s+1);}//-}=0;main=mapM print[s++"Haskell :P",tail""]

इसे ऑनलाइन (С) आज़माएं! इसे ऑनलाइन (हास्केल) आज़माएं!

परिणाम टिप्पणियों को इंटरव्यू करके प्राप्त किया जाता है, सी संस्करण अनिवार्य रूप से यह है:

char * s = "This program errors out in ";
int main ()
{
   --s;
   *s = printf ("%sC :P", s + 1);
}

(स्ट्रिंग की शुरुआत से पहले लिखने से विफलता हासिल की जाती है)।

दूसरी ओर हास्केल संस्करण, निम्न को कम करता है:

char /* x = 0 -- a useless operator (/*) taking two arguments
s = "This program errors out in ";
int main () = 0 -- a useless function int taking two arguments
main = mapM print [s ++ "Haskell :P", tail ""]

(रिक्त सूची की पूंछ लेने से विफलता प्राप्त होती है)

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