क्रैश आईआरबी (इंटरैक्टिव रूबी)


18

रूबी एक अंतर्निहित आरईपीएल के साथ आता है, जो काफी काम आता है।

IRB का स्क्रीनशॉट

आपकी चुनौती कोड की कम से कम मात्रा में इसे क्रैश करना है!

"क्रैश" की परिभाषा है "इसे अनपेक्षित तरीके से बाहर निकलें ।" इस का मतलब है exit, quit, abort, irb_exit, irb_quit, एट। अल। मान्य उत्तर नहीं हैं।

इसके अलावा, आप सिस्टम के किसी अन्य हिस्से पर कोई दुष्प्रभाव नहीं डाल सकते हैं। उदाहरण के लिए, `rm -rf /`मान्य नहीं है।

कोई भी संस्करण 1.9.3 या इसके बाद का संस्करण मान्य है। यदि आपका कोड केवल रूबी के एक विशिष्ट संस्करण पर काम करता है, तो आप उत्तर में इसे निर्दिष्ट कर सकते हैं।

अंतिम प्रतिबंध यह है कि आप किसी भी रत्न पर भरोसा नहीं कर सकते हैं।

यह , इसलिए आईआरबी को जीतने वाला सबसे छोटा कोड जीत जाएगा!


मैं गोल्फ गोल्फर, plz को खतरे में डाल सकता हूं?
डिजिटल ट्रामा

3
वाह। मैं माणिक नहीं जानता, और इन उत्तरों को पढ़ने के बाद मैं इसे कभी नहीं सीखूँगा।
.ज़ाबेरा

"दुर्घटना 'की परिभाषा' इसे अनपेक्षित तरीके से बाहर निकालना है।" "हमें अनपेक्षित रूप से कुछ करने का इरादा कोड लिखने के लिए कैसे माना जाता है? मैं स्पष्ट करता हूं कि आप जो पूछ रहे हैं, उसे बंद कर दें।
msh210

जवाबों:


6

5 अक्षर

ENV=0

( @daniero के उत्तर से प्रेरित )


मेरे लिए काम नहीं करता है:irb(main):001:0> ENV=0 (irb):1: warning: already initialized constant ENV
ब्रायन मिंटन

@ ब्रायनमिंटन के हाथ में केवल 1.9.3p194 था और यह उस संस्करण के साथ "काम करता है"।
हॉवर्ड

आह, मेरा संस्करण काफी पुराना है:irb 0.9.6(09/06/30)
ब्रायन मिंटन

1
@BrianMinton जो irb
DarkHeart

17

16 अक्षर

String=0
String=0

सबसे छोटा नहीं है, लेकिन मुझे लगता है कि यह मज़ेदार है कि यह दूसरी पंक्ति तक क्रैश नहीं करता है। IRB के बाहर निकलने से पहले पाठ की लगभग 20 पंक्तियों को उत्पन्न करता है। किसी कारण से इसे उदाहरण के लिए छोटा नहीं किया जा सकता है 2.times{String=0}


संपादित करें

अब तक के सभी उत्तरों में से, यह एकमात्र ऐसा है जिसने मेरे लिए काम किया है (और यह उन सभी संस्करणों में काम करता है जिन पर मैं अपना हाथ रख सकता हूं), और मैंने इन सभी संस्करणों में इनका परीक्षण किया है:

sshमेरे विश्वविद्यालय में ' लिनक्स ' के लिए मुझे जो भी मिलता है :
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux]
ruby 1.8.5 (2006-08-25) [x86_64-linux]
मैक ओएस एक्स Mavericks डिफ़ॉल्ट:
ruby 2.0.0p247 (2013-06-27 revision 41674) [universal.x86_64-darwin13]
OS X पर Homebrew के माध्यम से स्थापित:
ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-darwin12.4.0]

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

7 अक्षर

मेरा पहला संस्करण (और / या @ हावर्ड का जवाब, अधिकतम क्रॉस संदर्भ के लिए) @ चीनी पर्ल गोथ के उत्तर के साथ संयोजित करना :

STDIN=0

Array=0तुरंत दुर्घटना।
प्रिमो

1
@primo शांत है, लेकिन मैं इसे काम करने के लिए नहीं मिल सकता है: / (मेरा संपादन देखें)
daniero

यहां भी, केवल यह और समापन स्टड उत्तर कार्य, अन्य सभी केवल चेतावनी देते हैं।
user12205

हाँ, स्टड एक मेरे लिए भी काम करता है। यह मेरे संपादन के बाद पोस्ट किया गया था।
डानिएरो

1
आप दूसरी पंक्ति को छोटा कर सकते हैं =और यह अभी भी क्रैश हो सकता है।
21

10

12 चरस

माणिक वास्तव में मेरी चाय का कप नहीं है, लेकिन मुझे पता चला है कि जब मैं स्टड बंद करता हूं तो irb मज़ेदार काम करता है :)

$stdin.close

irb 0.9.6 (09/06/30) और रूबी 1.9.3p194 पर परीक्षण किया गया


5
STDIN.closeभी काम करता है, और यह 1 कम चार है!
कावू

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

संबंधित: $>.close
जॉर्डन

7

१० ९ चार

@ Daniero के उत्तर पर एक छोटा संस्करण:

String=1
-

यह कम से कम डिफ़ॉल्ट ओएस एक्स मावेरिक्स रूबी (2.0.0) में काम करता है।

उत्तर मूल रूप से इस तथ्य पर निर्भर करता है कि रूबी Tokenफ़ंक्शन caseइनपुट टोकन पर करता है । मामलों में से एक के खिलाफ जांच करता है String, जिसे पहली पंक्ति द्वारा फिर से परिभाषित किया गया है। यह मामला विफल हो जाता है, इसलिए मामला डिफ़ॉल्ट के माध्यम से गिरता है, जो मानता है कि ऑब्जेक्ट में ए हैancestors एक्सेसर है (जो ऐसा नहीं करता है)।

क्योंकि टोकन में "बग" है, पहली पंक्ति विफल नहीं होगी क्योंकि लाइन केवल पार्सिंग समाप्त होने के बाद प्रभावी होती है। इस प्रकार, यह केवल बाद की लाइनों को प्रभावित करता है। विफलता देखने के लिए बाद की लाइनों में किसी प्रकार का ऑपरेटर होना चाहिए।


स्पष्टीकरण के लिए +1। लेकिन यह डेनिरो कौन है? ;)
डैनिएरो

@ डानिएरो: मेरी क्षमा याचना, मैं आज लिस्डेक्सिक प्रतीत होता हूं।
nnonneo

6

5 अक्षर

$>=$<

स्टडआउट को स्टड करने के लिए सेट करता है जो लेखन के लिए स्टड खोलने की कोशिश में एक त्रुटि फेंकता है और आईआरबी को क्रैश करता है।


ध्यान दें कि यह रूबी 2.3.0p0 पर परीक्षण किया गया है
photoionized

5

22 अक्षर

def method_missing;end

जाहिरा तौर पर यह कुछ irb आंतरिक के साथ खिलवाड़ करता है। (इसे ठीक करने के लिए, self.बाद में जोड़ें def।)


4

12 अक्षर

def send;end

जहाँ तक मुझे पता है, ऑब्जेक्ट क्लास में चार विधियाँ हैं जो इस तरह का व्यवहार दर्शाती हैं:

send
method_missing
respond_to?
respond_to_missing?

4
मेरी आईआरबी यह बस रिटर्न में nilऔर पर किया जाता है
daniero

@daniero 1.8.6 और 1.9.3 दोनों दुर्घटनाग्रस्त।
प्रिमो

@primo अब 2.0.0 पर दुर्घटनाग्रस्त नहीं होता है
drusepth

4

5 वर्ण

IRB=0

कुछ भी आईआरबी को परेशान नहीं करता है जैसे आईआरबी को फिर से परिभाषित करना।


हाँ! यह क्रैश नहीं करता है, लेकिन किसी भी चीज के बाद 20 लाइनों की त्रुटियों को प्रिंट करता है!
मेगा मैन

शायद IRM का एक अलग संस्करण अब, @MegaMan अब तक, निश्चित रूप से YMMV।
vgoff

वैसे भी दोनों मस्त हैं!
मेगा मैन



0

26 + 1 = 27 वर्ण

यह बहुत गॉल्फ़ी नहीं है, लेकिन मैं इसे दुर्घटना से खोज रहा था और लगा कि अन्य लोग इसका आनंद ले सकते हैं।

class Fixnum;def +;end end

मैंने +1 को स्कोर में जोड़ा क्योंकि आपको ऊपर दर्ज करने के बाद दूसरी बार Enter दबाना होगा (लेकिन +2 नहीं क्योंकि कोई और नहीं दर्ज करें)।

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