एक प्रोग्राम लिखें जो इसके मिरर स्तर को आउटपुट करता है


31

95 मुद्रण योग्य ASCII वर्ण हैं:

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

में Consolas फॉन्ट (स्टैक एक्सचेंज कोड ब्लॉक डिफ़ॉल्ट), पात्रों में से कुछ समरूपता के एक ऊर्ध्वाधर अक्ष के चारों ओर दर्पण है:

  • पात्रों के ये जोड़े एक-दूसरे के दर्पण हैं: () [] {} <> /\
  • ये पात्र स्वयं के दर्पण हैं: ! "'*+-.8:=AHIMOTUVWXY^_ovwx| (ध्यान दें कि स्थान एक है।)
  • इनमें दर्पण नहीं हैं: #$%&,012345679;?@BCDEFGJKLNPQRSZ`abcdefghijklmnpqrstuyz~

( i, l, 0, #, और शायद अन्य पात्रों के लिए अपने स्वयं के दर्पण कुछ फोंट में हैं, लेकिन हम Consolas आकृतियों पर रह सकते हैं।)

एक स्ट्रिंग को स्वयं का दर्पण कहा जाता है यदि इसे केवल 39 दर्पण पात्रों के साथ बनाया जाता है , तो ऐसी व्यवस्था की जाती है कि स्ट्रिंग में समरूपता की एक केंद्रीय ऊर्ध्वाधर रेखा होती है। तो ](A--A)[अपने आप में एक दर्पण है लेकिन](A--A(] नहीं है।

एक-लाइन समान लंबाई वाला प्रोग्राम लिखें जो स्वयं का दर्पण हो। जब इसके बायीं आधी की एन कॉपियों को इसमें लगाया गया है और इसके दाहिने आधे हिस्से की एन कॉपियों को इसमें जोड़ा गया है, तो इसे एन + 1 का उत्पादन करना चाहिए। एन एक गैर-नकारात्मक पूर्णांक है।

उदाहरण के लिए, यदि प्रोग्राम ](A--A)[(बाएं आधा: ](A-दायां आधा:) था -A)[, तो:

  • रनिंग ](A--A)[आउटपुट चाहिए 1। (एन = 0)
  • रनिंग ](A-](A--A)[-A)[आउटपुट चाहिए 2। (एन = 1)
  • रनिंग ](A-](A-](A--A)[-A)[-A)[आउटपुट चाहिए 3। (एन = 2)
  • रनिंग ](A-](A-](A-](A--A)[-A)[-A)[-A)[आउटपुट चाहिए 4। (एन = 3)
  • । । ।
  • रनिंग ](A-](A-](A-](A-](A-](A-](A-](A-](A-](A--A)[-A)[-A)[-A)[-A)[-A)[-A)[-A)[-A)[-A)[आउटपुट चाहिए 10। (एन = 9)
  • आदि।

नियम

  • स्टडआउट या आपकी भाषा के निकटतम विकल्प के लिए आउटपुट। एक वैकल्पिक अनुगामी न्यूलाइन हो सकती है। कोई इनपुट नहीं लिया जाना चाहिए।
  • इस प्रक्रिया को सैद्धांतिक रूप से पर्याप्त मेमोरी और कंप्यूटिंग शक्ति को देखते हुए N 15 2 या उससे अधिक के लिए काम करना चाहिए ।
  • एक पूर्ण कार्यक्रम की आवश्यकता है, न कि केवल एक REPL कमांड।

बाइट्स जीत में सबसे छोटा प्रारंभिक कार्यक्रम (एन = 0 केस)।


कुछ फोंट में, #अपने स्वयं के प्रकाशन के रूप में अच्छी तरह से है, लेकिन, आप सही हैं, कंसोल में नहीं।
सुपरजेडी २२४

1
उत्तर का उपयोग करने की अनुमति है? दूसरे शब्दों में: क्या हमें एक पूर्ण मान्य कार्यक्रम लिखना चाहिए या एक अभिव्यक्ति पर्याप्त है? मैं हास्केल प्रविष्टि के बारे में सोच रहा हूं जो कि ghci में चलने पर काम करेगा लेकिन एक वैध संपूर्ण कार्यक्रम नहीं है।
बकुरीउ

@ बकुरीउ एक पूर्ण कार्यक्रम की आवश्यकता है। हास्केल उत्तर अमान्य है।
केल्विन के शौक

4
प्रत्येक अभिभावक के 'b' और 'd' दर्पण क्यों नहीं हैं? यह मेरी योजना को असंभव बनाता है: P
Thijs ter Haar

1
@ThijsterHaar मैं वास्तव में इस पर विचार नहीं किया था, लेकिन ऐसा लगता है कि उनके कॉनसोल आकार में थोड़े अलग हैं, क्षमा करें: पी
केल्विन के शौक

जवाबों:


20

पिप, 12 8 4 बाइट्स

अब 66% कम बाइट्स के साथ!

x++x
  • xएक वैरिएबल है, जिसे प्रीइंस्टीट्यूट किया गया है ""। संख्यात्मक संदर्भ में, यह बन जाता है 0
  • पहली छमाही, अंतिम +रूप से, फॉर्म की अभिव्यक्ति बनाती है x+x+...+x। यह एक मान्य कथन है जो कुछ भी नहीं करता है।
  • +पहले हाफ से फाइनल सहित दूसरा हाफ फॉर्म की अभिव्यक्ति करता है ++x+x+...+x। करने के लिए ++xवेतन वृद्धिx1 , और बाकी खुद N बार में जोड़ देता है। क्योंकि पिप में अभिव्यक्तियों का बाएं-से-दाएं मूल्यांकन किया जाता है, वेतन वृद्धि पहले होने की गारंटी है, और परिणाम दर्पण के स्तर की संख्या के बराबर है।
  • अंत में, इस अभिव्यक्ति का मूल्य ऑटो-मुद्रित है।

दुर्भाग्य से, पिप अच्छी तरह से विशाल अभिव्यक्ति को संसाधित नहीं करता है: यह समाधान maximum recursion depth exceeded500 या इसके बाद के संस्करण एन के लिए एक त्रुटि का कारण बनता है । यहाँ एक पिछला समाधान है जो 8 बाइट्स के लिए नहीं है :

x++oo++x

पिप पर अधिक


ठीक है, जब तक कोई 2 बाइट का जवाब नहीं देता है, ऐसा लगता है कि आपको बैग में यह मिल गया है। वैसे, मुझे नहीं पता कि आपने इसे N = 32767 के साथ चलाया है , लेकिन वास्तविक आउटपुट है Fatal error: maximum recursion depth exceeded while calling a Python object
डेनिस

@ डेनिस हाँ, मैं वास्तव में भाग गया - यह काफी पहले शुरू होता है, लगभग 600 अगर पहले नहीं। इसका कारण यह है कि अभिव्यक्तियों का मूल्यांकन सबसे पहले सभी उप-संदर्भों के पुनरावर्ती मूल्यांकन द्वारा किया जाता है, इसलिए x+x+...+xपुनरावृत्ति की O (N) गहराई उत्पन्न करता है। हो सकता है कि यह उत्तर अमान्य कर दे। मैं एक नोट जोड़ूंगा।
DLosc

पायथन में पुनरावृत्ति सीमा आसानी से समायोज्य है, है ना?
डेनिस

@ डेनिस हाँ, हालाँकि इस बारे में सख्त चेतावनी है कि यदि आप इसे बहुत अधिक सेट करते हैं तो यह आपके सिस्टम के लिए क्या करेगा, इसलिए मैंने कभी इसकी कोशिश नहीं की। ;) इसके अलावा, इसे कॉन्फ़िगर करना पिप के भीतर से संभव नहीं है , इसलिए यह मुझे धोखा देने जैसा लगता है। यदि आप इसे आजमाना चाहते हैं, तो मैं परिणाम सुनने में दिलचस्पी लूंगा।
DLosc

मैंने कोशिश की। मेरी मशीन पर, पहले से ही 20000 तक पुनरावर्तन सीमा बढ़ रही है। लेकिन जवाब के बाद से केवल पर्याप्त मेमोरी और कंप्यूटिंग पावर देने के लिए काम करना पड़ता है, जो कि एक समस्या नहीं होनी चाहिए।
डेनिस

34

GolfScript, 10 बाइट्स

!:{)::(}:!

इसे वेब गोल्फस्क्रिप्ट के साथ ऑनलाइन आज़माएँ: एन = 0 , एन = 1 , एन = 2 , एन = 3 , एन = 41

वेब गोल्फस्क्रिप्ट में 1024 वर्ण सीमा है, लेकिन रूबी दुभाषिया एन = 32767 को पूरी तरह से संभालता है:

$ curl -Ss http://www.golfscript.com/golfscript/golfscript.rb > golfscript.rb
$ echo '"!:{):"32768*":(}:!"32768*' | ruby golfscript.rb > mirror-level-32767.gs
$ ruby golfscript.rb mirror-level-32767.gs
32768

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

बिना किसी इनपुट के, गोल्फस्क्रिप्ट में शुरू में स्टैक पर एक खाली स्ट्रिंग है।

पहले बाएं आधे हिस्से में, निम्नलिखित होता है:

  • !रिक्त स्ट्रिंग के लिए तार्किक लागू नहीं होता है। यह धक्का देता है 1

  • :{वैरिएबल में स्टैक पर पूर्णांक बचाता है {

    हां, यह एक मान्य पहचानकर्ता है, हालांकि संग्रहीत मूल्य को पुनः प्राप्त करने का कोई तरीका नहीं है।

  • ) स्टैक पर पूर्णांक बढ़ाता है।

  • : एक अधूरा निर्देश है।

बाद के बचे हुए हिस्सों में, निम्न होता है:

  • :!(जहां :पहले से बचे हुए हैं) चर में ढेर पर पूर्णांक बचाता है !

    हाँ, यह भी एक मान्य पहचानकर्ता है। यह !कमांड को तोड़ता है , लेकिन हम इसका उपयोग नहीं करते हैं।

  • :{, )और :पहले की तरह काम करते हैं।

पहले दाहिने आधे में, निम्नलिखित होता है:

  • ::(जहां :पहले से बचे हुए हैं) चर में ढेर पर पूर्णांक बचाता है :

    हां, यहां तक ​​कि मान्य पहचानकर्ता भी है । के रूप में {, संग्रहीत मूल्य को पुनः प्राप्त करने का कोई तरीका नहीं है।

  • ( स्टैक पर पूर्णांक को घटाता है, बाएं हिस्सों की संख्या को बढ़ाता है।

  • }, क्योंकि यह बेजोड़ है और तुरंत निष्पादन को समाप्त कर देता है।

    यह एक अनिर्दिष्ट सुविधा है। मैं उन्हें सुपरकमिंग कहता हूं ।

शेष कोड को केवल अनदेखा किया जाता है।


}दर्पण प्रतियोगिता में अपने कोड के 2 भाग में एक बेजोड़ होना वास्तव में अजीब लगता है ।
बैलेस्टा

यह palindrome वेरिएंट में एक आम चाल है। में "\""/", चौथा दोहरा उद्धरण बेमिसाल होगा क्योंकि दूसरा भी बच गया है।
डेनिस

27

Z80 मशीन कोड, 8 6 बाइट्स *

<8ww8> * Amstrad BASIC से प्रवेश करके कुछ शर्तों को मानता है

<   INC A         // A=A+1
8w  JR C, #77     ## C is unset unless A has overflowed, does nothing

w   LD (HL), A    // Saves A to memory location in HL (randomly initialised)
8>  JR C, #3E     ## C is still unset, does nothing

Aशुरू में जब BASIC से प्रवेश किया जाता है। यह वृद्धि कर देता है A n बार, तो यह लिखते हैं n (जो बुनियादी द्वारा एक से थोड़ा यादृच्छिक स्थान के लिए सेट है) एक ही स्मृति स्थान के लिए समय! JRके बाद से कूद सापेक्ष आपरेशन कभी नहीं कुछ भी करता है Cझंडा हमेशा सेट नहीं हो, तो "बाहर टिप्पणी" निम्नलिखित बाइट के लिए प्रयोग किया जाता है! यह संस्करण निश्चित प्रवेश शर्तों को मानकर थोड़ा धोखा दे रहा है, अर्थात् मूल गारंटियों से प्रवेश करना जो Aहमेशा 0. होता है। (HL)सुरक्षित होने की गारंटी नहीं है, और वास्तव में, शायद एक खतरनाक स्थान है। नीचे दिया गया कोड बहुत अधिक मजबूत है यही कारण है कि यह इतना लंबा है।

Z80 मशीन कोड, 30 बाइट्स

ASCII के रूप में: o!.ww.!>A=o>{))((}<o=A<!.ww.!o

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

o   LD L, A       ## 
!.w LD HL, #772E  // Load specific address to not corrupt random memory!
w   LD (HL), A    ## Save random contents of A to memory
.!  LD L, #21     ## 
>A  LD A, #41     // A=#41
=   DEC A         // A=#40
o   LD L, A       // L=#40
>{  LD A, #7B     ## 
)   ADD HL, HL    // HL=#EE80
)   ADD HL, HL    // HL=#DD00. L=#00 at this point

((  JR Z, #28     ## 
}   LD A, L       // A=L
<   INC A         // A=L+1
o   LD L, A       // L=L+1
=   DEC A         // A=L
A   LD B, C       ## 
<   INC A         // A=L+1
!.w LD HL, #772E  // Load address back into HL
w   LD (HL), A    // Save contents of A to memory
.!  LD L, #21     ## 
o   LD L, A       // L=A

अनुमत निर्देशों का टूटना:

n   op    description
--  ----  -----------
28  LD    LoaD 8-bit or 16-bit register
3   DEC   DECrement 8-bit or 16-bit register
1   INC   INCrement 8-bit or 16-bit register
1   ADD   ADD 8-bit or 16-bit register

Available but useless instructions:
3   JR    Jump Relative to signed 8-bit offset
1   DAA   Decimal Adjust Accumulator (treats the A register as two decimal digits
          instead of two hexadecimal digits and adjusts it if necessary)
1   CPL   1s ComPLement A
1   HALT  HALT the CPU until an interrupt is received

अनुमति दिए गए 39 निर्देशों में से, 28 भार संचालन हैं (0x40 से 0x7F तक के ब्लॉक सभी एकल बाइट LDनिर्देश हैं), जिनमें से अधिकांश यहां कोई मदद नहीं करते हैं! स्मृति अनुदेश के लिए केवल लोड अभी भी अनुमति है LD (HL), Aजिसका मतलब है कि मुझे मूल्य को स्टोर करना होगा A। चूँकि Aएक अनुमत INCनिर्देश के साथ एकमात्र रजिस्टर बचा है, यह वास्तव में काफी उपयोगी है!

मैं A0x00 के साथ शुरू करने के लिए लोड नहीं कर सकता क्योंकि ASCII 0x00 एक अनुमत चरित्र नहीं है! सभी उपलब्ध मान 0 से दूर हैं और सभी गणितीय और तार्किक निर्देश अस्वीकृत हो गए हैं! सिवाय ... मैं अभी भी कर सकता हूँ ADD HL, HL, 16-बिट HLको अपने आप में जोड़ें ! सीधे लोडिंग मानों के अलावा (यहाँ कोई उपयोग नहीं!), इंक्रीमेंटिंग Aऔर डीक्रिमेंटिंग A, Lया HLयह एक ही तरीका है जिससे मुझे एक रजिस्टर का मूल्य बदलना पड़ता है! वास्तव में एक विशेष निर्देश है जो पहली छमाही में सहायक हो सकता है लेकिन दूसरी छमाही में काम करने के लिए एक दर्द, और एक-पूरक निर्देश जो यहां लगभग बेकार है और बस जगह लेगा।

तो, मुझे 0 का निकटतम मूल्य मिला: मैं 0x41। वह 0 के करीब कैसे है? बाइनरी में यह 0x01000001 है। इसलिए मैं इसे घटाता हूं, इसे लोड करता Lहूं और ADD HL, HLदो बार करता हूं ! Lअब शून्य है, जिसे मैं वापस लोड करता हूं A! दुर्भाग्य से, ASCII कोड ADD HL, HLहै )इसलिए मुझे अब (दो बार उपयोग करने की आवश्यकता है । सौभाग्य से, (है JR Z, e, जहां eअगले बाइट है। तो यह दूसरी बाइट को ऊपर उठाता है और मुझे यह सुनिश्चित करने की ज़रूरत है कि यह Zध्वज के साथ सावधान होकर कुछ भी नहीं करता है ! Zध्वज को प्रभावित करने का अंतिम निर्देश DEC A(प्रति-सहज रूप से, ADD HL, HLइसे नहीं बदलता है) और जब से मुझे पता है कि Aउस बिंदु पर 0x40 था, इसकी गारंटी है कि Zयह सेट नहीं है।

दूसरी छमाही में पहला निर्देश JR Z, #28पहले 255 बार कुछ भी नहीं करेगा क्योंकि Z ध्वज को केवल तभी सेट किया जा सकता है जब A 255 से 0. पर ओवरफ्लो हो गया हो। उसके बाद आउटपुट गलत होगा, हालाँकि यह केवल 8-बिट मानों को वैसे भी सहेज रहा है कोई बात नहीं होनी चाहिए। कोड को 255 से अधिक बार विस्तारित नहीं किया जाना चाहिए।

कोड को एक स्निपेट के रूप में निष्पादित किया जाना है क्योंकि सफाई से लौटने के सभी उपलब्ध तरीके बंद कर दिए गए हैं। सभी RETurn निर्देश 0x80 से ऊपर हैं और कुछ जंप संचालन की अनुमति केवल एक सकारात्मक ऑफसेट पर जा सकती है, क्योंकि सभी 8-बिट नकारात्मक मान भी बंद कर दिए गए हैं!


6
क्या। यह क्या है।
मेघावी

4
अब मैंने इस उत्तर को गोल्फस्क्रिप्ट / जे / आदि का उपयोग करके देखा है। बस धोखा लगता है। : पी
बादलों

क्या 16-बिट A रजिस्टर के साथ Z80- संगत प्रोसेसर हैं? मैं पूछ रहा हूं क्योंकि प्रश्न के लिए कोड को N = 32767 पर काम करना पड़ता है ।
डेनिस

1
@ डेनिस एन = 32767 के लिए काम करने के लिए यह कम से कम 2 x 32767 या 65534 बाइट्स लंबा होना चाहिए । Z80 केवल 65536 बाइट्स मेमोरी को संबोधित कर सकता है, जिससे यह असंभव कार्य है क्योंकि मुझे विश्वास नहीं होता कि मैं प्रोग्राम को 6 बाइट्स से छोटा बना सकता हूँ! Aरजिस्टर हमेशा 8 बिट है, अन्यथा प्रोसेसर Z80 के साथ संगत नहीं होगा। मैं कहूंगा कि पर्याप्त मेमोरी और कंप्यूटिंग शक्ति दी को यहां से हटा दिया गया है!
सीजे डेनिस

1
@ डेनिस आप समझते हैं कि किसी भी Z80 संगत प्रोसेसर में A8 बिट्स के अलावा किसी अन्य चीज का रजिस्टर क्यों नहीं होगा ? इसे 16-बिट्स में बदलने से उदाहरण के लिए 255 + 1 = 0 पर निर्भर कोड टूट जाएगा । आपको सीपीयू का आविष्कार करना होगा, इसे जेड 160 कहते हैं, जो डिफ़ॉल्ट 16-बिट रजिस्टर का उपयोग करता है, लेकिन फिर भी जेड 8 से समान 8-बिट अनुदेश का उपयोग करता है। अजीब!
सीजे डेनिस

19

जे, 16 14 बाइट्स

(_=_)]++[(_=_)

उपयोगों:

   (_=_)]++[(_=_)
1
   (_=_)]+(_=_)]++[(_=_)+[(_=_)
2
   (_=_)]+(_=_)]+(_=_)]++[(_=_)+[(_=_)+[(_=_)
3

स्पष्टीकरण:

  • J दाएं से बाएं का मूल्यांकन करता है।

  • (_=_) है inf equals inf जो सच है, के एक मूल्य है 1, इसलिए अभिव्यक्ति बन जाता है 1+]...[+1। ( (8=8)यह भी काम करेगा लेकिन यह बहुत अच्छा लग रहा है। :))

  • [और ]उनके बाएं और दाएं तर्कों को क्रमशः वापस करें यदि उनके पास 2 तर्क हैं। यदि वे केवल 1 प्राप्त करते हैं तो वे वापस लौट आते हैं।

  • +2 तर्क जोड़ता है। अगर यह केवल 1 हो जाता है तो यह वापस आ जाता है।

अब आइए 3 स्तर की अभिव्यक्ति का मूल्यांकन करें (दाएं से बाएं की ओर):

(_=_)]+(_=_)]++[(_=_)+[(_=_)  NB. (_=_) is 1

1]+1]+1]++[1+[1+[1  NB. unary [, binary +

1]+1]+1]++[1+[2  NB. unary [, binary +

1]+1]+1]++[3  NB. unary [, unary +

1]+1]+1]+3  NB. unary +, binary ]

1]+1]+3  NB. unary +, binary ]

1]+3  NB. unary +, binary ]

3

जैसा कि हम देखते हैं कि दाईं ओर आधा 1जोड़ा जाता है और बाईं ओर1 वांछित पूर्णांक N, दर्पण स्तर के परिणामस्वरूप छोड़ दिया जाता है।

इसे यहाँ ऑनलाइन आज़माएँ।


12

हास्केल, 42 बाइट्स

(8-8)-(-(8-8)^(8-8))--((8-8)^(8-8)-)-(8-8)

सौभाग्य से हास्केल में एक टिप्पणी (-> --) दर्पण योग्य है और इसका आधा (-> -) एक वैध कार्य है। बाकी नंबर पाने के लिए कुछ गणित है 0और 1। मूल रूप से हमारे पास (0)-(-1)एक टिप्पणी हैN=0(0)-(-1)- प्रत्येक चरण में और इसके लिए प्रस्ताव रखें ।

यदि आउटपुट के लिए फ्लोटिंग पॉइंट नंबर की अनुमति है, तो हम निर्माण कर सकते हैं 1 से 8/8और 26 बाइट्स के साथ द्वारा प्राप्त करें:

हास्केल, 26 बाइट्स

(8-8)-(-8/8)--(8\8-)-(8-8)

आउटपुट 1.0, 2.0आदि।


2
यह तकनीकी रूप से अमान्य है क्योंकि यह एक पूर्ण कार्यक्रम होना चाहिए।
केल्विन के शौक

@ केल्विन के शौक: मैं देखता हूं। क्या हमारे पास पूर्ण कार्यक्रम के लिए न्यूनतम आवश्यकताओं पर सहमति है? मैंने मेटा खोजा है, लेकिन केवल फ़ंक्शंस के बारे में चर्चा मिली, कार्यक्रमों के बारे में नहीं। एक पूर्ण कार्यक्रम की परिभाषा के आधार पर मैं अपने समाधान को ठीक करने में सक्षम हो सकता हूं।
नौ

यदि आप इसे किसी फ़ाइल में सहेज सकते हैं program.hsऔर फिर $ runhaskell program.hsकमांड लाइन से चलाते हैं और आउटपुट देखते हैं तो मैं इसे एक पूर्ण कार्यक्रम कहूंगा । मैं हास्केल नहीं जानता, इसलिए मैं बिल्कुल नहीं कह सकता कि बदलाव की क्या जरूरत है।
केल्विन के शौक

2
@ केल्विन हॉबीज़: runhaskellएक शेल स्क्रिप्ट है जो कुछ वातावरण सेट करती है और अंत में कॉल करती है ghc, हास्केल संकलक। आप सीधे इनके साथ अपना कोड चला सकते हैं ghc: ghc -e "(8-8)-(-8/8)--(8\8-)-(8-8)"। यह लॉन्च करता है ghcजो एक तर्क के रूप में प्रदान किए गए कोड का मूल्यांकन करता है, परिणाम को प्रिंट करता है और बाहर निकालता है। कोई आरईपीएल, कोई बातचीत नहीं। बेशक इसके लिए बाइट की संख्या में +1 जोड़ा जाएगा -e
nimi

@nimi: -eइस मामले में स्कोर में योगदान नहीं देता है। हम perl -Eया gcc -std=c99तो के लिए बाइट्स की गणना नहीं करते हैं।
डेनिस

11

CJam, 14 बाइट्स

]X+:+OooO+:+X[

CJam दुभाषिया में इसे ऑनलाइन आज़माएं: N = 0 , N = 1 , N = 2 , N = 3 , N = 41

ध्यान दें कि यह कोड एक त्रुटि संदेश के साथ समाप्त होता है। जावा दुभाषिया का उपयोग करना, उस त्रुटि संदेश को STDERR को बंद या पुनर्निर्देशित करके दबाया जा सकता है। 1

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

बाएं हिस्सों में, निम्नलिखित होता है:

  • ] एक सरणी में पूरे ढेर लपेटता है।

  • X1उस ऐरे में भेजता है।

  • :+ सभी सरणी तत्वों के योग की गणना करता है।

  • Oo रिक्त सरणी की सामग्री को प्रिंट करता है (यानी, कुछ भी नहीं)।

पहले दाहिने आधे में, निम्नलिखित होता है:

  • o स्टैक पर पूर्णांक प्रिंट करता है, जो वांछित आउटपुट है।

  • O+ स्टैक के सबसे ऊपरी आइटम पर एक खाली सरणी को जोड़ने का प्रयास करता है।

    हालांकि, धक्का देने से पहले स्टैक खाली था O। यह प्रोग्राम के निष्पादन को विफल और समाप्त कर देता है।

शेष कोड को केवल अनदेखा किया जाता है।

1 मेटा पोल के अनुसार सबमिशन को एक त्रुटि के साथ बाहर निकलने की अनुमति दी जानी चाहिए? , यह अनुमति है।


मैं त्रुटि की वजह से इसे स्वीकार करने पर संदेह करूंगा, लेकिन इसके जीतने के बाद से मैं बहुत चिंतित नहीं हूं।
केल्विन के शौक

इस तरह के कार्य CJam में आश्चर्यजनक रूप से कठिन हैं, यह देखते हुए कि यह एक गोल्फ भाषा है। यहां तक ​​कि एक अज्ञात ब्लॉक में एक सिंटैक्स त्रुटि (जैसे, एक अपरिभाषित ऑपरेटर) पूरे कार्यक्रम को निष्पादित करने से रोक देगा। मैं अभी भी त्रुटि से छुटकारा पाने की कोशिश कर रहा हूं।
डेनिस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.