3… 2… 1… क्रैश!


47

आपका कार्य एक पूर्ण कार्यक्रम लिखना है जो कि हर बार चलने के बाद 10 से नीचे गिना जाता रहेगा।

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

यहाँ पायथन 3 में एक उदाहरण कार्यान्वयन है:

try:f=open("a","r+");v=int(f.read())
except:f=open("a","w");v=10
1/v
print(v)
f.seek(0)
f.write(str(v-1))

यह , इसलिए सबसे छोटा उत्तर (बाइट्स में मापा गया) जीतता है।


12
दुर्घटनाग्रस्त होने से क्या होता है?
कॉनर ओ'ब्रायन

2
@ ConorO'Brien हम्म ... यह मेटा में चर्चा नहीं की गई है?
फलन

2
@ चैलेंजर 5 नहीं कि मुझे पता है। क्या एक त्रुटि फेंकना पर्याप्त होगा?
कॉनर ओ'ब्रायन

1
@ ConorO'Brien हाँ।
फल तोड़ना

जवाबों:


18

6502 मशीन भाषा + एप्पल] [+ रोम, 12 (11? 10? 9) बाइट्स

CE 06 80 F0 01 A2 0B A9 00 4C 24 ED

पर शुरू होना चाहिए $8000। जब गिनती 0 तक पहुँच जाती है, तो सिस्टम मॉनिटर पर क्रैश।


C6 B6 F0 01 A2 0B A9 00 4C 24 ED

पर शुरू होना चाहिए $B1। जब से मैं (दो-बाइट) शून्य-पृष्ठ संस्करण का उपयोग कर सकता हूं, तब यह एक बाइट बचाता है DEC, लेकिन महत्वपूर्ण एप्सलेट दिनचर्या को अधिलेखित करता है CHRGET; आपको इसे लोड करने और मॉनीटर से कॉल करने की आवश्यकता होगी, और आपके द्वारा एक बार काम पूरा करने के लिए CTRL+ BReturnको फिर से शुरू करने के लिए + का उपयोग करना होगा। सुनिश्चित नहीं है कि यह अमान्य है या नहीं।


CE 06 80 F0 01 A2 0B 4C 26 ED

पर शुरू होना चाहिए $8000। यह आरंभ नहीं करता है $9E, दो बाइट्स की बचत करता है । हालांकि, इसका मतलब है कि आपको इसे नकारात्मक पते से नहीं बुलाना चाहिए (या, यदि आप इसे मॉनिटर से कॉल करते हैं, तो आपको मॉनिटर को सकारात्मक पते से कॉल करना होगा)। यदि आप करते हैं, Applesoft की CALLदिनचर्या स्टोर करेगा FFमें $9E, जब यह मुद्रण नंबर करने के लिए 65,280 जोड़ने के लिए यह कारण। फिर, सुनिश्चित नहीं है कि यह समाधान अमान्य है या नहीं।


C6 B6 F0 01 A2 0B 4C 26 ED

पर शुरू होना चाहिए $B1। यह उपरोक्त दो कार्यक्रमों का संयोजन है, जो कुल तीन बाइट्स की बचत करता है; आपको मॉनीटर को एक सकारात्मक पते के साथ कॉल करना होगा, इसे लोड करना होगा और इसे वहां से चलाना होगा, और एक बार काम पूरा करने के लिए Ctrl+ BReturnको फिर से शुरू करने के लिए + का उपयोग करना होगा।


ध्यान दें कि ये प्रोग्राम केवल मेमोरी में प्रोग्राम को संशोधित करते हैं; डिस्क से प्रोग्राम को फिर से लोड करना उल्टी गिनती को रीसेट करेगा। यह काम करता है क्योंकि Apple] [(और] [+, // e, और // c) की कोई मेमोरी सुरक्षा प्रणाली नहीं है; कार्यक्रम (और इसके स्व-संशोधनों) के बाहर निकलने के बाद भी मेमोरी में रहेगा, इसलिए आप इसे मेमोरी से तब तक चालू रख सकते हैं जब तक आप उस मेमोरी को किसी और चीज़ से अधिलेखित नहीं कर देते।


नमूना चला

]BLOAD COUNT THEN BRK
]CALL 32768
10
]CALL 32768
9
]CALL 32768
8
]CALL 32768
7
]CALL 32768
6
]CALL 32768
5
]CALL 32768
4
]CALL 32768
3
]CALL 32768
2
]CALL 32768
1
]CALL 32768

8008-    A=80 X=9D Y=00 P=36 S=EE
*

व्याख्या

     DEC NUM+1  ; Decrement the LDX instruction's operand
     BEQ NUM+1  ; If it is now zero, branch to it; 00 is the opcode for the BRK instruction, which causes the program to crash to the monitor
NUM  LDX #$0B   ; Load the X register with 0x0A; the operand has already been decremented once
     LDA #$00   ; Load the accumulator with 0
     JMP $ED24  ; Jump to $ED24, an Applesoft ROM routine which prints A (high byte),X (low byte) in decimal

10 बाइट संस्करण का स्पष्टीकरण

     DEC NUM+1  ; Decrement the LDX instruction's operand
     BEQ NUM+1  ; If it is now zero, branch to it; 00 is the opcode for the BRK instruction, which causes the program to crash to the monitor
NUM  LDX #$0B   ; Load the X register with 0x0A; the operand has already been decremented once
     JMP $ED26  ; Jump to $ED26, which is two bytes into the Applesoft routine at $ED24. The two skipped bytes would store the accumulator in $9E

वेरिएंट

प्रिंट ERRऔर बीप्स जब गिनती 0 तक पहुँचते हैं

सामान्य - 15 बाइट्स

CE 06 80 F0 07 A2 0B A9 00 4C 24 ED 4C 2D FF

ओवरराइट CHRGET- 14 बाइट्स

C6 B6 F0 07 A2 0B A9 00 4C 24 ED 4C 2D FF

प्रारंभ नहीं करता है $9E- 13 बाइट्स

CE 06 80 F0 05 A2 0B 4C 26 ED 4C 2D FF

ओवरराइट CHRGETकरता है और शुरू नहीं करता है $9E- 12 बाइट्स

C6 B6 F0 05 A2 0B 4C 26 ED 4C 2D FF

गिनती 0 तक पहुंचने पर जमा देता है

सामान्य - 12 बाइट्स

CE 06 80 F0 FE A2 0B A9 00 4C 24 ED

ओवरराइट CHRGET- 11 बाइट्स

C6 B6 F0 FE A2 0B A9 00 4C 24 ED

प्रारंभ नहीं करता है $9E- 10 बाइट्स

CE 06 80 F0 FE A2 0B 4C 26 ED

ओवरराइट CHRGETकरता है और शुरू नहीं करता है $9E- 9 बाइट्स

C6 B6 F0 FE A2 0B 4C 26 ED

मुझे यकीन नहीं है कि मैं इसे समझता हूं .. क्या यह पायथन में एक फ़ंक्शन के समान नहीं होगा जो एक वैश्विक चर को घटाता है और केवल शेल में निष्पादित होने पर काम करता है? क्या इसकी अनुमति है? मेरा क्या मतलब है, क्या यह आमतौर पर किसी कार्यक्रम के लिए मेमोरी को किसी बिंदु पर छोड़ने की उम्मीद नहीं है, बाद में फिर से लोड किया जाना है?
redstarcoder

3
@redstarcoder नहीं - Apple II का शाब्दिक कोई मेमोरी आवंटन सिस्टम नहीं है; आप रैम में कहीं भी कुछ भी स्टोर कर सकते हैं और यह किसी भी प्रोग्राम द्वारा तब तक एक्सेस किया जा सकता है जब तक कि यह दूसरे मूल्य के साथ ओवरराइट न हो जाए।
16_16 डालें

@inset_name_here, मुझे यकीन नहीं है कि यह कैसे सुलभ हो सकता है कहीं भी RAM कुछ भी बदलता है। क्या आप अन्य कार्यक्रमों को मज़बूती से चला सकते हैं और अभी भी इस कार्यक्रम को बाद में चला सकते हैं? शायद मैं पूरी तरह से समझने के लिए यहां के नियमों से परिचित नहीं हूं, इसलिए मैं इसे छोड़ दूंगा। मैं सिर्फ रिबूट के माध्यम से बने रहने के लिए एक पूर्ण कार्यक्रम की उम्मीद करता हूं और इसके निष्पादन के बीच में अन्य कार्यक्रमों को चलाने पर आमतौर पर ठीक चलने में सक्षम हो सकता हूं, लेकिन मुझे नहीं पता कि समुदाय एक पूर्ण कार्यक्रम के लिए क्या नियम रखता है।
redstarcoder

1
@redstarcoder की आम सहमति यह है कि यह प्रोग्राम एक डेवलपमेंट कंप्यूटर पर आवश्यक सॉफ्टवेयर के साथ चलाया जाता है और मतलब समय में कुछ और नहीं कर रहा है।
टॉम कारपेंटर

1
8 बाइट्स अगर आप $ 6E से चलते हैं: C6 75 F0 03 4C 22 ED
0B

35

लिनक्स पर पर्ल, 17 बाइट्स

मैंने सोचा कि यह एक ऐसा कार्यक्रम बनाना दिलचस्प हो सकता है जो किसी भी राज्य को बनाए नहीं रखता है, और अपने स्वयं के स्रोत कोड को संशोधित नहीं करता है; दूसरे शब्दों में, यह वास्तव में जाँच करता है कि ओएस पूछकर इसे कितनी बार चलाया गया है। सवाल कहता है "भंडारण के लिए उपयोग की जाने वाली कोई भी सुविधा कार्यक्रम के पहले निष्पादन से पहले खाली मान ली जा सकती है।", और इस तरह हम पूरी तरह से रिक्त ओएस से शुरू करना चाहते हैं। जैसे, मैं बेहतर समझाता हूँ कि आप कैसे उस बारे में जाते हैं, अन्यथा कार्यक्रम का परीक्षण करना मुश्किल है।

प्रोग्राम को चलाने के लिए वास्तव में दो तरीके हैं। किसी भी तरह से, उद्देश्य के लिए न्यूनतम ओएस एक शेल के अलावा कुछ भी नहीं चल रहा होगा (बदले में हमें पर्ल चलाने के लिए सक्षम करने के लिए), और उस पर सबसे सरल संभव शेल (ताकि यह कुछ भी फैंसी न करे जो ओएस को गैर बनाता है- खाली)। /bin/dashयहाँ एक अच्छा विकल्प है, क्योंकि यह सिस्टम रिकवरी के लिए एक न्यूनतम शेल के रूप में था। फिर, हमें लिनक्स को इस तरह से शुरू करने की आवश्यकता है कि यह कुछ भी नहीं चल रहा है dash। हम या तो init=/bin/dashलिनक्स कमांड लाइन के साथ कंप्यूटर को रिबूट करके ऐसा कर सकते हैं ताकि इसके अलावा कुछ भी शुरू न हो dash, या (बहुत आसानी से) unshare -Urfp /bin/dashटर्मिनल में उपयोग करके लिनक्स कंटेनर का निर्माण हो ( unshareवास्तव में एक खाली ओएस नहीं बनाता है, लेकिन यह अनुकरण करता हैएक; विशेष रूप से, कंटेनर के अंदर लगता है कि यह जड़ है, dashसोचता है कि यह इनिट है, आदि, जैसे कि एक वास्तविक खाली ओएस पर होगा)। अस्वीकरण: मैंने वास्तव में नंगे धातु पर इसका परीक्षण अभी तक नहीं किया है, केवल अंदर unshare, लेकिन इसे सिद्धांत में दोनों तरीकों से काम करना चाहिए।

अंत में, एक बार जब हम सेट हो जाते हैं, तो हमें बस पीआईडी ​​को देखना होगा; जैसा कि हम एक रिक्त प्रणाली पर हैं, init सिस्टम (यहां, शेल) में PID 1 होगा, इसलिए पर्ल के निष्पादन में 2 से 12 तक PID शामिल होंगे। तो हमारा कार्यक्रम इस तरह दिखता है:

say 12-$$||die

यहाँ एक नमूना रन है:

$ unshare -Urfp /bin/dash
# perl -E 'say 12-$$||die'
10
# perl -E 'say 12-$$||die'
9
# perl -E 'say 12-$$||die'
8
# perl -E 'say 12-$$||die'
7
# perl -E 'say 12-$$||die'
6
# perl -E 'say 12-$$||die'
5
# perl -E 'say 12-$$||die'
4
# perl -E 'say 12-$$||die'
3
# perl -E 'say 12-$$||die'
2
# perl -E 'say 12-$$||die'
1
# perl -E 'say 12-$$||die'
Died at -e line 1.
#

आप किस OS पर इसे चला रहे हैं? मैं Ubuntu Linux 14.04 पर हूँ, और unshareकिसी भी झंडे का समर्थन नहीं करता -Urfp
isaacg

@ आइसाकग: उबंटू १६.०४। unshareयह बहुत नया है (यह एक OS फीचर के लिए एक इंटरफ़ेस है जो बहुत नया है) और बग केवल पिछले वर्ष या उससे अधिक इस्त्री किए गए हैं। यदि आप 2-वर्षीय संस्करण का उपयोग कर रहे हैं, तो यह आश्चर्यजनक है कि यह कार्यक्षमता में बहुत सीमित है।

14

बैश + सेड, 41 40 38 बाइट्स

echo $[n=10/1]
sed -i s/$n/$[n-1]/g $0

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


TIO लिंक में हेडर और फूटर है, जो बाइट काउंट को नहीं जोड़ते हैं?
पावेल

2
नहीं, वे केवल 11 बार कार्यक्रम चलाने के लिए हैं।
डेनिस

मुझे मिलता है sed: invalid option -- '/'। sed (GNU sed) 4.2.2
श्रिंक

@ अंश श्री मेरे पास स्थानीय रूप से और TIO पर sed का एक ही संस्करण है, और वे उस त्रुटि को नहीं दिखाते हैं।
डेनिस

9

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

y=localStorage;y.a=y.a||10;alert(y.a--||a)

इस फिडेल के साथ इसका परीक्षण करें - उलटी गिनती को रीसेट करने के लिए अपने स्थानीय भंडारण को साफ करना सुनिश्चित करें।

बहुत से बाइट्स के लिए steenbergh, Lmis और obarakon को धन्यवाद!


y=localStorage;y.a=y.a||10;alert(y.a>0?y.a--:a)आपको एक बाइट बचा सकता है।
ओलिवर

आप sessionStorageएक आसान रीसेट के साथ परीक्षण करने के लिए उपयोग कर सकते हैं (बस एक ताजा टैब का उपयोग करें) लेकिन निश्चित रूप से +2 बाइट्स।
केविन रीड

आउच, सॉरी, मैंने अभी आपका जवाब देखा, मैं लगभग वही कर रहा था। यदि आप चाहते हैं, तो आप l=localStorage;l.l=-~l.l;alert(10-l.l||l)एक बाइट को बचाने के लिए उपयोग कर सकते हैं , मैं मेरा डिलीट कर
दूंगा

@ मैं निश्चित रूप से :) मैं console.logयहाँ नहीं देखता , लेकिन मैं चाहता हूँ कि या तो
C5H8NNOO4

1
@obarakon हाँ, और बूलियन शॉर्ट-सर्किट से रोकती है aका मूल्यांकन जब LocalStorage में मूल्य 0. नहीं है से
Mego

8

सी #, 197 160 159 125 बाइट्स

namespace System.IO{class P{static void Main(){int n=11;for(;File.Exists(""+--n););File.Create(""+n);Console.Wr‌​ite(n*n/n);}}}

दूध के लिए धन्यवाद 34 बाइट्स बचा

और एक स्वरूपित संस्करण ( ReadKeyजोड़ा गया ताकि आप आउटपुट देख सकें):

namespace System.IO
{
    class P
    {
        static void Main()
        {
            int n=11;
            for(;File.Exists(""+--n););
            File.Create(""+n);
            Console.Wr‌​ite(n*n/n);
        }
    }
}

यह जितना मैंने सोचा था कि यह संभव है कि गोल्फिंग के लिए शायद इतना ही स्थान है।


2
File.Existsऔर File.Createके बजाय ReadAllTextऔर WriteAllText। यदि फ़ाइल नाम मौजूद है तो बस जाँच करें, दोनों फ़ाइल सामग्री के साथ नहीं है। इसके अलावा, namespace System.IOऔर आप नाम स्थान से हटा सकते हैं System.Console.Write। 125 बाइट्स:namespace System.IO{class P{static void Main(){var n=11;for(;File.Exists(""+--n););File.Create(""+n);Console.Write(n*n/n);}}}
दूध

@milk बहुत बहुत धन्यवाद! विश्वास नहीं कर सकता कि मैंने केवल फ़ाइल नाम का उपयोग करने के बारे में सोचा ही नहीं था! और मुझे उस नेमस्पेस ट्रिक के बारे में पता नहीं था।
TheLethalCoder

8

दिल्लोग एपीएल , ३३ २/ २२/२०? बाइट्स

मुझे यकीन नहीं है कि यह वैध है, क्योंकि इसमें एक फ़ंक्शन होता है (जिसे डमी तर्क के साथ कहा जाना चाहिए)। हालांकि, सभी एपीएल कार्यक्रमों (विशुद्ध रूप से कार्यात्मक या नहीं) की स्थिति समान है, और वास्तव में कुछ एपीएल संस्करणों में केवल पारंपरिक कार्यक्रम नहीं हैं। मुआवजे में, मैंने इसे नाम देने के लिए दो बाइट्स जोड़े हैं, हालांकि यह वांछित प्रभाव के लिए आवश्यक नहीं है।

f←{6::⊢c∘←10⋄÷÷c∘←c-1}

ध्यान दें कि यह एक अनौपचारिक विचित्रता पर निर्भर करता है, जो ∘←विश्व स्तर पर असाइन होता है।

6:: किसी भी मूल्य त्रुटि पर

⊢cवापसी सी

∘←10 जो विश्व स्तर पर 10 पर सेट है

अभी

÷÷c दो बार उलटा लौटें (शून्य पर त्रुटियां) c

∘← जो विश्व स्तर पर स्थापित है

c-1 से कम

TryAPL ऑनलाइन!


निश्चित रूप से मान्य 28 बाइट संस्करण:

f
'c←11'/⍨0=⎕NC'c'
c←÷÷c-1

सेटिंग के द्वारा काम करता है 11 के लिए अगर याद आ रही है, तो से 1 घटाकर सी , inverting दो बार (जो div-दर-शून्य त्रुटि देता है, तो सी -1 0 है), के लिए बताए , और नए मूल्य outputting।


पुराने 33 बाइट संस्करण:

च
÷÷ ≢2 ↓ r⊣⎕FX¯1 ↓ आर ← ⎕NR'f '










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


1
एर ... क्यों इतने सारे newlines हैं?
कृति लिथोस

4
@KritiiLithos कार्यक्रम प्रत्येक रन के लिए एक कम लाइन के साथ खुद को फिर से परिभाषित करता है।
Adám

7

पर्ल, 37 36 बाइट्स

9=~//;print$'-sysopen$~,$0,print$'+1

प्रारंभिक मान -1 तक पहुंचने पर क्रैश (जो 0 मुद्रित होगा), जैसा कि यह =~ऑपरेटर पर लिखता है ।

के sysopenबजाय का उपयोग करके एक बाइट को बचाया open। यह मुझे STDOUTफ़ाइल मोड (( 1उर्फ O_WRONLY) के रूप में रिटर्न मान का उपयोग करने से पहले प्रिंट करने की अनुमति देता है , इससे पहले $~कि पुन: असाइन किया गया हो।

नमूना उपयोग

$ perl crash-off.pl
10
$ perl crash-off.pl
9
$ perl crash-off.pl
8

...

$ perl crash-off.pl
2
$ perl crash-off.pl
1
$ perl crash-off.pl
syntax error at crash-off.pl line 1, near "1~"
Execution of crash-off.pl aborted due to compilation errors.

6

पर्ल 6 ,  60  58 बाइट्स

put 10-$=finish.lines||die;
$*PROGRAM.open(:a).put;
=finish
 
open($*PROGRAM,a=>put 10-$=finish.lines||die).put
=finish
 

के बाद न्यूलाइन कैरेक्टर चाहिए =finish

dieसे बदला जा सकता है 1/0

स्पष्टीकरण:

इसके बाद लाइनों की एक सूची मिलती है =finish( $=finish.lines) से घटाती है 10, और यदि परिणाम नहीं है तो 0इसे प्रिंट करता है, अन्यथा यह dieएस।

आखिरी चीज जो यह करती है, वह अपेंड मोड में खुद को खोलती है, और अंत में एक और लाइन जोड़ती है।


उन लोगों के लिए Permalink जिनके पास Perl 6. नहीं है
Dennis

@ डेनिस कम से कम यह नहीं बता सकता है कि इदेओन (रन say $*PERL.compiler.version) के रूप में डेट से बाहर है
ब्रैड गिल्बर्ट b2gills

1
2014.7 ... वाह! क्या 2016.11 2016.7 से बहुत अलग है? यदि हां, तो मैं इसे स्रोत से बना सकता हूं।
डेनिस

@ डेनिस पर्ल 6 की आधिकारिक रिलीज़ 2015-12-25 थी। 2015 के उत्तरार्ध में एक बड़ा बदलाव हुआ, जिसे द ग्रेट लिस्ट रिफ्लेक्टर (जीएलआर) कहा जाता है, इसलिए 2014.7 पर काम करने के लिए कोड प्राप्त करना लगभग असंभव है। 2016 में जो भी हो रहा है, उनमें से अधिकांश प्रदर्शन से संबंधित हैं, हालांकि बहुत सारे किनारे की स्थिति ठीक हो गई है। यहां 2015 के रिलीज़ के बाद राकोडो के अधिकांश गोल्फ कोड को कुछ भी काम करना चाहिए। इसलिए मुझे लगता है कि v2016.07 ठीक है।
ब्रैड गिल्बर्ट b2gills

6

पायथन 2, 65 बाइट्स

f=open(__file__,"r+")
x=75-len(f.read())
x/x
print x
f.write('#')

L3viathan के जवाब से प्रेरित ।

60 बाइट्स को कम किया जा सकता है जब आप फ़ाइल की तरह एक एकल वर्ण नाम के लिए चुन सकते हैं xऔर उसके बाद की जगह __file__के साथ 'x'। उस मामले में, के 75साथ बदलें 70


@ Flp.Tkc हाँ, लेकिन बाइट्स की एक ही संख्या नहीं है?
एलेक्स हॉल

ओह, यह सच है: P
FlipTack

4

जोल्फ, 20 बाइट्स

γ-@▲lqΈ?␡γ?γaγ0₯I₯C1

यहाँ कोशिश करो! 0मुद्रित होने पर त्रुटियां । कोड को संशोधित करता है। आने की व्याख्या।


मैं जोल्फ से बहुत परिचित नहीं हूं, लेकिन यह तुरंत ऑनलाइन दुभाषिया में काम नहीं करता है।
फलन

1
@ चैलेंजर 5 भाषा आमतौर पर केवल फ़ायरफ़ॉक्स पर काम करती है।
कॉनर ओ'ब्रायन

4

अप्लेसॉफ्ट बेसिक, 21 बाइट्स (टोकन)

0  PRINT 9 + 1: CALL 2066: END : OR <CTRL-F><CTRL-H>`

बदलें <CTRL-F>और <CTRL-H>उनके शाब्दिक संस्करणों के साथ। ध्यान दें कि यह केवल मेमोरी में प्रोग्राम को संशोधित करता है; डिस्क से इसे फिर से लोड करना उल्टी गिनती को रीसेट करेगा।


नमूना चला

]RUN
10

]RUN
9

]RUN
8

]RUN
7

]RUN
6

]RUN
5

]RUN
4

]RUN
3

]RUN
2

]RUN
1

]RUN

?SYNTAX ERROR IN 0

व्याख्या

PRINT 9 + 1आप क्या उम्मीद करेंगे। CALL 2066स्मृति स्थान 2066 पर 6502 मशीन-भाषा की दिनचर्या को कॉल करता है, जो बाद में है END :ENDकार्यक्रम को रोक देता है ताकि मशीन-भाषा की दिनचर्या (जो कि एप्लेसॉफ्ट दुभाषिया, कचरा है) को निष्पादित नहीं किया जाता है।

मशीन-भाषा की दिनचर्या में मात्र कमी आती 9है PRINT 9 + 1। disassembly:

0812-   CE 06 08    DEC $0806
0815-   60          RTS

काउंटर 0 पर पहुंचने के बाद, इसे "डिक्रिप्टेड" किया जाता है /; प्रोग्राम को चलाने का प्रयास तब एक सिंटैक्स त्रुटि का कारण होगा।


4

* <<> , 20 18 बाइट्स

a1Fi:0(?b1-:?:1Fn;

यह वास्तव में लिनक्स पर काम करता है (और जो भी \nमेरे नाम की फाइलों का समर्थन करता है )। यह \nपहले रन और आउटपुट पर एक फाइल बनाता है 10। यह प्रत्येक उपचारात्मक रन पर एक कम संख्या में आउटपुट करने के लिए आगे बढ़ता है, सिवाय इसके 0कि यह कहां दुर्घटनाग्रस्त होता है।

व्याख्या

a1F                   open file named "\n"
   i:                 recieve input and duplicate it (-1 if empty)
     0(?b             if the file is empty, push 11 to the stack
         1-           subtract one
           :          duplicate the number
            ?:        if the number isn't 0, duplicate it again
              1F      save the number to the file
                n     output the number (crash if non-existant)
                 ;    exit

2
सुविधाजनक है कि *> <> IO
अल्फी गुडाक्रे

4

PHP 57 बाइट्स

echo$n=($f=file(f))?$f[0]:10?:die;fputs(fopen(f,w),--$n);

जब यह हिट होता है तो बाहर नहीं निकलता (लेकिन बिना गिने) 0। क्या यह पर्याप्त है?

के साथ भागो -r


4

सी #, 156 बाइट्स

मैंने @ TheLethalCoder का जवाब थोड़ा सा दिया, और बयानों को फिर से दर्ज करके और int.parse () को समाप्त करके 3 बाइट्स को बचाने में सक्षम था। अभी भी सुधार की गुंजाइश है, मुझे यकीन है।

using System.IO;class P{static void Main(){int n;try{n=File.ReadAllText("f")[0]-48;}catch{n=10;}System.Console.Write(n/n*n);File.WriteAllText("f",""+--n);}}

Ungolfed:

using System.IO;
class P
{
    static void Main()
    {
        int n;
        try
        {
            n = File.ReadAllText("f")[0] - 48;
        }
        catch {
            n = 10;
        }
        System.Console.Write(n / n * n);
        File.WriteAllText("f", "" + --n);
    }
}

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


लोग आमतौर पर अन्य व्यक्तियों के सुझाव के नीचे टिप्पणी छोड़ देते हैं जो सुधार का सुझाव देते हैं, हालांकि दूध की खान द्वारा सुझाए गए खान में सुधार के कारण अब बहुत अलग है, इसलिए आपका खुद ही ठीक है
TheLethalCoder

मैं आमतौर पर अगर वे किसी और की उत्तर टिप्पणी में सुधार कर रहे हैं, लेकिन अगर यह उनके लिए बहुत अलग है, तो अपना स्वयं का उत्तर पोस्ट करें
TheLethalCoder

3

Powershell V2.0, 49 बाइट्स

(पहले कभी कोड गोल्फ, बाइट्स की गणना करने के नियमों के बारे में पता नहीं लगा सका। मैंने ऑनलाइन स्ट्रिंग टू बाइट कैलकुलेटर का इस्तेमाल किया)

if(!$n){$n=10;$n}else{$n-=1;if($n-eq0){throw};$n}

चल रहा है:

PS C:\Users\***> if(!$n){$n = 10;$n}else{$n=$n-1;if($n-eq0){throw};$n;}
10

____________________________________________________________________________________________________________________________________________________________________
PS C:\Users\***> if(!$n){$n = 10;$n}else{$n=$n-1;if($n-eq0){throw};$n;}
9

____________________________________________________________________________________________________________________________________________________________________
PS C:\Users\***> if(!$n){$n = 10;$n}else{$n=$n-1;if($n-eq0){throw};$n;}
8

____________________________________________________________________________________________________________________________________________________________________
PS C:\Users\***> if(!$n){$n = 10;$n}else{$n=$n-1;if($n-eq0){throw};$n;}
7

____________________________________________________________________________________________________________________________________________________________________
PS C:\Users\***> if(!$n){$n = 10;$n}else{$n=$n-1;if($n-eq0){throw};$n;}
6

____________________________________________________________________________________________________________________________________________________________________
PS C:\Users\***> if(!$n){$n = 10;$n}else{$n=$n-1;if($n-eq0){throw};$n;}
5

____________________________________________________________________________________________________________________________________________________________________
PS C:\Users\***> if(!$n){$n = 10;$n}else{$n=$n-1;if($n-eq0){throw};$n;}
4

____________________________________________________________________________________________________________________________________________________________________
PS C:\Users\***> if(!$n){$n = 10;$n}else{$n=$n-1;if($n-eq0){throw};$n;}
3

____________________________________________________________________________________________________________________________________________________________________
PS C:\Users\***> if(!$n){$n = 10;$n}else{$n=$n-1;if($n-eq0){throw};$n;}
2

____________________________________________________________________________________________________________________________________________________________________
PS C:\Users\***> if(!$n){$n = 10;$n}else{$n=$n-1;if($n-eq0){throw};$n;}
1

____________________________________________________________________________________________________________________________________________________________________
PS C:\Users\***> if(!$n){$n = 10;$n}else{$n=$n-1;if($n-eq0){throw};$n;}
ScriptHalted
At line:1 char:49
+ if(!$n){$n = 10;$n}else{$n=$n-1;if($n-eq0){throw <<<< };$n;}
    + CategoryInfo          : OperationStopped: (:) [], RuntimeException
    + FullyQualifiedErrorId : ScriptHalted

PPCG में आपका स्वागत है! बाइट्स की गणना करने के नियम भाषा द्वारा उपयोग किए जाने वाले वर्ण एन्कोडिंग पर निर्भर करते हैं। पॉवर्सशेल शायद ASCII या UTF-8 एन्कोडिंग का उपयोग करता है, और इसलिए केवल ASCII कोड वाली स्क्रिप्ट के लिए, जैसा कि यहां है, प्रत्येक वर्ण 1 बाइट लेता है
लुइस मेंडो

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

अगर मैंने इसे .ps1 के अंदर लिखा है और उदाहरण के लिए 10 गुना क्रैश-ऑफ .ps1 निष्पादित किया है, तो क्या यह एक पूर्ण कार्यक्रम के रूप में गिना जाता है?
कीरोन डेविस

@KieronDavies हाँ, बशर्ते कि आप हर बार के बीच में खोल को बंद कर दें और खोल दें, तो भी आपको वही परिणाम मिलेगा। निष्पादन के बीच खोल में "स्मृति" में आइटम रखना एक "पूर्ण कार्यक्रम" पर्यावरण से पावरशेल के "आरईपीएल पर्यावरण" को परिभाषित करता है।
AdmBorkBork

3

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

मेरा पहला गोल्फ प्रयास

import java.io.PrintWriter;class M{public static void main(String[] a) throws Exception{if(!new java.io.File("x").exists()) try(PrintWriter p=new java.io.PrintWriter("x")){p.write("10");}int b=new java.util.Scanner(new java.io.File("x")).nextInt();try(PrintWriter p=new java.io.PrintWriter("x")){p.print(b/b*b-1+"");System.out.print(b+"");}}}

ungolfed

import java.io.PrintWriter;

class M {
    public static void main(String[] a) throws Exception {
        if (!new java.io.File("x").exists()) {
            try (PrintWriter p = new java.io.PrintWriter("x")) {
                p.write("10");
            }
        }
        int b = new java.util.Scanner(new java.io.File("x")).nextInt();
        try (PrintWriter p = new java.io.PrintWriter("x")) {
            p.print(b / b * b - 1 + "");
            System.out.print(b + "");
        }
    }
}

आप java.io.*पूरी तरह से योग्य कंस्ट्रक्टर नामों का उपयोग करके आयात करके और इसे टालकर 300 बाइट्स तक इसे प्राप्त कर सकते हैं , और आप इस तथ्य का उपयोग करके एक और 8 काट सकते हैं कि "प्रिंट" स्वचालित रूप से इसके तर्कों को कड़ा कर देगा:import java.io.*;class M{public static void main(String[] a) throws Exception{if(!new File("x").exists()) try(PrintWriter p=new PrintWriter("x")){p.print(10);}int b=new java.util.Scanner(new File("x")).nextInt();try(PrintWriter p=new PrintWriter("x")){p.print(b/b*b-1);System.out.print(b);}}}
Glen

आप इसे फ़ाइल के लिए "10" न लिखकर 237 बाइट्स तक ले जा सकते हैं, और इसके बजाय बस ?जब आप पढ़ते हैं तो फ़ाइल अस्तित्व पर आधारित ऑपरेटर का उपयोग करें b:import java.io.*;class M{public static void main(String[] a) throws Exception{int b=new File("x").exists()?new java.util.Scanner(new File("x")).nextInt():10;try(PrintWriter p=new PrintWriter("x")){p.print(b/b*b-1);System.out.print(b);}}}
Glen

सबसे अधिक अनुकूलित मैं कर सकता था: 220 बाइट्स। यहाँ जानवर है:import java.io.*;class A{public static void main(String[]a)throws Exception{File f=new File("f");int b=f.exists()?new FileInputStream(f).read()-48:10;new PrintWriter(f).printf("%d",b/b*b-1).close();System.out.print(b);}}
ओलिवियर ग्रेजायर

सुझाव के लिए thx :)
विक्टर मेलग्रेन

3

SQLite, 142 137

यह शायद बहुत अधिक चतुराई से किया जा सकता है। 141 कोड के लिए 136 वर्ण:

create table if not exists t(n not null);insert into t select 11;update t set n=case n when 1 then null else n-1 end;select min(n)from t

प्लस फ़ाइल नाम के लिए 1 xमें sqlite3 x '…'


1
अच्छा! नहीं देखा SQLite पहले इस तरह का इस्तेमाल किया। आप "चयन 11" के साथ "मान (11)" को बदलकर कुछ बाइट्स को निचोड़ सकते हैं, और "टी सीमा 1 से एन का चयन करें" के साथ "सेलेक्ट मिन (एन) टी के साथ"
बेंस जोफुल

3

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

x=typeof x!=typeof 1?10:x!=1?x-=1:_

l=localStorage;l.a=typeof l.a!=typeof""?10:l.a!=1?l.a=--l.a:_;aler‌​t(l.a)


5
ओपी ने (टिप्पणियों में) स्पष्ट किया है कि एक पूर्ण कार्यक्रम की आवश्यकता है।
डेनिस

1
@ डेनिस क्या मेरा संशोधित सबमिशन एक पूर्ण कार्यक्रम के रूप में योग्य है?
ओलिवर

मुझे नहीं पता , लेकिन मुझे ऐसा नहीं लगता। मैं कहूंगा कि बिना किसी कॉल alertया इसके समान, यह सिर्फ एक REPL स्निपेट है।
डेनिस

2
मुझे ठीक लगता है। (अपने फोन से इसका परीक्षण नहीं कर सकते।)
डेनिस

3

रूबी, 94 87 84 61 59 बाइट्स

j=File.open(?a,"a+");1/(i=j.readlines.size-14);p -i;j.puts

कृपया नीचे सुझाव दें।

धन्यवाद @ ConorO'Brien विचारों के लिए (कुछ बेशर्मी से उसके जवाब से फट गया)।



का प्रयोग करें newऔर sizeके बजाय openऔर length
ली डब्ल्यू

2

रूबी, 52 + 1 = 53 बाइट्स

फ़ाइल मान ली गई है a(+1 बाइट)।

q=File.read ?a
0/h=62-q.size
p h
File.write ?a,q+?1#

चल रहा है

C:\Users\Conor O'Brien\Documents\Programming
λ type a
q=File.read ?a
0/h=62-q.size
p h
File.write ?a,q+?1#
C:\Users\Conor O'Brien\Documents\Programming
λ ruby a
10

C:\Users\Conor O'Brien\Documents\Programming
λ ruby a
9

C:\Users\Conor O'Brien\Documents\Programming
λ ruby a
8

C:\Users\Conor O'Brien\Documents\Programming
λ ruby a
7

C:\Users\Conor O'Brien\Documents\Programming
λ ruby a
6

C:\Users\Conor O'Brien\Documents\Programming
λ ruby a
5

C:\Users\Conor O'Brien\Documents\Programming
λ ruby a
4

C:\Users\Conor O'Brien\Documents\Programming
λ ruby a
3

C:\Users\Conor O'Brien\Documents\Programming
λ ruby a
2

C:\Users\Conor O'Brien\Documents\Programming
λ ruby a
1

C:\Users\Conor O'Brien\Documents\Programming
λ ruby a
a:2:in `/': divided by 0 (ZeroDivisionError)
        from a:2:in `<main>'

... आप नामों को मान सकते हैं?
dkudriavtsev

आप अंतिम पंक्ति में 'और' इको >> # $ 0 '(बैकटिक्स के साथ) के बजाय $ 0 का उपयोग कर सकते हैं।
जीबी

@GB यह मानने की तुलना में अभी भी अधिक बाइट्स है a(जो केवल +1 है)।
wizzwizz4

? एक 2 बाइट्स है, $ 0 2 बाइट्स है, लेकिन व्हाइटस्पेस की जरूरत नहीं है।
जीबी

2

पायथन 2, 89 बाइट्स

x=10
x/x
print x
f=open(__file__,"r+")
s=f.read()
f.seek(0)
f.write(s.replace(`x`,`x-1`))

मुझे खोलने का आपका विचार पसंद आया __file__इसलिए मैंने अपने उत्तर में इसका उपयोग किया।
एलेक्स हॉल

@ अलेक्सहॉल महान विचारlen
L3viathan

@ Flp.Tkc मैं उस के साथ कोई वर्ण नहीं बचाऊंगा। मुझे अभी भी चर का उपयोग करने की आवश्यकता है s, क्योंकि मुझे पढ़ने की आवश्यकता है, फिर तलाश करें, फिर लिखें। print x/x*xकाम करेगा, लेकिन बाइट गिनती में सुधार नहीं होता।
L3viathan

2

TI-BASIC (TI-84 प्लस) (15 बाइट्स)

If not(Ans
11
Ans-1
AnsAns/Ans

Ans पहले रन से पहले 0 (डिफ़ॉल्ट मान) के बराबर होना चाहिए।

चूंकि AnsAns/Ansकार्यक्रम की अंतिम पंक्ति है, इसे आउटपुट किया जाएगा और जब तक कि यह 0 नहीं हो जाता है, तब तक Ans में संग्रहीत किया जाता है, जिस स्थिति में यह त्रुटि होती है।


2

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

l=localStorage;l.l=-~l.l;alert(11-l.l||I)


@Mego हाँ जाहिर है, मुझे नहीं पता कि यह कैसे हो सकता है ... जब मैंने इसे लिखा था, तो aइसके बजाय lमैंने इसे बदल दिया था, और बिना सोचे-समझे इसे बदल दिया, क्योंकि मुझे लगा कि यह अधिक मजेदार लगता है ... यह बहुत देर हो चुकी है और इसके अलावा , यह बात बताने के लिए धन्यवाद।
C5H8NNaO4

1

GNU स्मालटाक, 70, 68 बाइट्स

"-S" ध्वज के लिए 66 बाइट्स कोड +2 बाइट्स

संपादन

  • अनावश्यक कोष्ठकों को हटा दिया, -2 बाइट्स

golfed

X=Y ifTrue:[Smalltalk at:#X put:10]ifFalse:[X:=X-1].(X*X/X)printNl

परीक्षा

>seq 11|xargs -L1 sudo gst -S fail.st 2>/dev/null
10
9
8
7
6
5
4
3
2
1
Object: 0 error: The program attempted to divide a number by zero
ZeroDivide(Exception)>>signal (ExcHandling.st:254)
SmallInteger(Number)>>zeroDivide (SysExcept.st:1426)
SmallInteger>>/ (SmallInt.st:277)
UndefinedObject>>executeStatements (fail.st:1)

जरूरी

आपको gst को रूट के रूप में चलाना होगा , इसके लिए डिफ़ॉल्ट छवि को संशोधित करने में सक्षम होना चाहिए, या मैं अपनी छवि को -I के साथ निर्दिष्ट कर सकता हूं


1

PHP, 45 बाइट्स

ईमानदारी से यकीन नहीं है कि यह एक मायने रखता है।

<?session_start();echo10-$_SESSION[0]++?:die;

मैं एक उदाहरण के लिए एक लिंक पोस्ट करूंगा, लेकिन सभी ऑनलाइन परीक्षक जिन्हें मैं जानता हूं कि session_start()उनका उपयोग करने की अनुमति नहीं है।

यह प्रत्येक बार जब तक आप पृष्ठ को ताज़ा नहीं करते, तब तक गिनती जारी रखेंगे, जब dieकमांड चलाया जाएगा।


0

QBIC , 70 बाइट्स

open"r",1,"a.b" $get#1,1,e|~e=0|e=z\e=e-1]?e~e=0|$error 1|]$put#1,1,e|

फ़ाइल खोलता है a.b(या पहले रन पर नहीं मिलने पर इसे बनाता है), रिकॉर्ड 1 में पढ़ता है e। यदि वह रिकॉर्ड नहीं मिला है, तो मान लीजिए 10, बाकी सब 1. पर e==0, एक त्रुटि बढ़ाएं। वापस लिखें eकरने के लिए a.b

फ़ाइल का उपयोग QBIC में नहीं बनाया गया है, यह अंतर्निहित QBasic पर बहुत निर्भर करता है।


0

बैच, 72 बाइट्स

@call:l
@if %n%==0 goto g
@echo %n%
@cmd/cset/a-1>>%0
:l
@set/an=10

एक्सटेंशन सहित पूर्ण फ़ाइल नाम का उपयोग करके इनवाइट करने की आवश्यकता है। अंतिम पंक्ति में अनुवर्ती नई रेखा नहीं होनी चाहिए। -1अंतिम पंक्ति के अंत तक लिखकर काम करता है ताकि यह हर बार 1 कम का मूल्यांकन करे। goto gकोई लेबल नहीं होने के कारण त्रुटियां :g


0

आर, 52 बाइट्स

`if`(!"x"%in%ls(),cat(x<-10),`if`(x>0,cat(x<-x-1),))

अनिवार्य रूप ls()से सभी विश्व स्तर पर संग्रहीत वस्तुओं के नामों को सूचीबद्ध करने के लिए उपयोग करता है। यदि हम मानते हैं कि वैश्विक वातावरण खाली है और "x"पहले से मौजूद नहीं है, तो उत्पन्न करें x=10, अन्यथा x!=0घटाना 1एक लापता तर्क कहता है जो एक त्रुटि देता है।


आप को हटाकर एक बाइट को बचा सकता है !और उसके बाद और कुछ बहस के आदेश, और बदल कर एक और दो स्विचन x>0के लिए x। (इसके अलावा, बाइट काउंट की exists("x")तुलना में थोड़ा "x"%in%ls()
नीटर है

आह, विनिर्देश में टिप्पणियों को फिर से पढ़ना, ऐसा लगता है कि एक पूर्ण कार्यक्रम की आवश्यकता है, जिसका अर्थ है कि आप रन के बीच वस्तु की दृढ़ता पर भरोसा नहीं कर सकते।
rturnbull

@rturnbull हालांकि मैं यह स्पष्ट रूप से कहा गया है, जहां नहीं मिल सकता है। यदि आप मुझे इसके लिए इंगित कर सकते हैं तो मैं उत्तर हटा दूंगा।
बिलीवॉब

इसका उल्लेख यहाँ किया गया है , हालाँकि इसे युक्ति में संपादित नहीं किया गया है।
rturnbull


0

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

function* f(n=11){for(;--n;yield n);throw''}

p=f()
console.log(p.next().value)
console.log(p.next().value)
console.log(p.next().value)
console.log(p.next().value)
console.log(p.next().value)
console.log(p.next().value)
console.log(p.next().value)
console.log(p.next().value)
console.log(p.next().value)
console.log(p.next().value)
console.log(p.next().value)

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