रूसी रूले


28

एक प्रोग्राम लिखें जो रूसी रूले खेलता है!

यदि कार्यक्रम शुरू किया जाता है,

  • मुद्रण के बाद सामान्य रूप से समाप्त होने के 5 से 6 की संभावना होनी चाहिए "मैं जीवित रहा!"
  • कार्यक्रम के दुर्घटनाग्रस्त होने की संभावना 1 से 6 होनी चाहिए। (विभाजन दोष, आदि)

कोई इनपुट, और कोई अन्य आउटपुट की अनुमति नहीं है।

यादृच्छिकता निष्पक्ष होनी चाहिए: इसका एक समान संभाव्यता वितरण होना चाहिए। इसका मतलब यह है कि एक बिना परिचालित चर (या बिना बीज के एक आरएनजी) MOD 6 पर्याप्त नहीं होगा।

यदि समाधान केवल एक समर्पित ऑपरेटिंग सिस्टम / प्लेटफॉर्म के साथ काम करता है, तो आपको स्कोर को 6 बाइट का जुर्माना मिलेगा।

सबसे छोटा कोड जीतता है, पहले वैध जवाब के 10 दिन बाद नहीं।


1
क्या हम अंतर्निहित रनटाइम पर निष्पक्ष होने के लिए भरोसा कर सकते हैं, भले ही दस्तावेज में स्पष्ट रूप से गारंटी न हो? उदाहरण के लिए पायथन को randrange(5)लागू किया जा सकता है randrange(MAX_INT)%6
ugoren

रचनात्मकता को प्रेरित करने के लिए, आप उन समाधानों के लिए एक बोनस देने पर विचार कर सकते हैं जो शून्य से विभाजन पर भरोसा नहीं करते हैं।
प्राइमो

शायद कहा बोनस 2. द्वारा स्कोर विभाजित को शामिल करना चाहिए
जो जेड

1
@ जोज़ेंग: यह बहुत अधिक होता। आमतौर पर आप इसे एक अलग त्रुटि बना सकते हैं, जैसे कि केवल कुछ पात्रों की लागत के लिए अशक्त सूचक संदर्भ आदि।
vsz

समझा। मैं कोड गोल्फ पहेली के लिए स्कोरिंग की स्थिति बनाने में बहुत अनुभवी नहीं हूं, इसलिए मैं अभी भी इस तरह से चीजें सीख रहा हूं।
जो जेड।

जवाबों:


4

05AB1E , 13 12 बाइट्स

6LΩiFë“IЖd!

-1 बाइट @ @ मिग्ना के लिए धन्यवाद ।

05AB1E वास्तव में त्रुटि करने में सक्षम नहीं होना चाहिए, लेकिन चूंकि 05AB1E के नए संस्करण में अभी भी विरासत संस्करण की तुलना में कुछ मुद्दे हैं, इसलिए मैं इस चुनौती के लिए त्रुटि का लाभ उठा सकता हूं।

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

स्पष्टीकरण:

6L          # Create the list [1,2,3,4,5,6]
  Ω         # Get a random choice from this list
   i        # If it is 1:
    F       #  Do a ranged loop, which currently results in a "(RuntimeError) Could not
            #  convert  to integer." error when no argument is given
   ë        # Else:
    IЖd!  #  Push dictionary string "I survived!" (which is output implicitly as result)

मेरा यह 05AB1E टिप देखें (अनुभाग कैसे शब्दकोश उपयोग कैसे करें? ) को समझने के लिए क्यों “IЖd!है "I survived!"


लगता है जैसे 5ÝΩz“IЖd!काम करना चाहिए, लेकिन जाहिरा तौर पर 1 / 0 = 0
मैजिक ऑक्टोपस Urn

1
@MagicOctopusUrn हाँ, 05AB1E लगभग कभी त्रुटि नहीं करता है। इसके अलावा .0, पुराने पुराने बिलिन के अलावा, जो 05AB1E के पुराने संस्करण में STDERR को 0 एरर द्वारा एक डिवीजन को फेंक देता था, मुझे यह भी पता नहीं है कि विरासत में 05AB1E में त्रुटि कैसे करें । हालांकि, नए संस्करण में अभी भी काफी त्रुटियां हैं, जिसे मैंने अपने अवसर पर ले लिया है। ;)
केविन क्रूज़सेन

1
मुझे पुराने की याद आती है .0, एक से अधिक मौकों पर इसने किसी को "वाट ... क्यों बनाया है?"
मैजिक ऑक्टोपस Urn

11

PHP 38 बाइट्स

<?~$$s[rand(+$s=sssss,5)]?>I survived!

+एक गैर-संख्यात्मक स्ट्रिंग से पहले रखने से मूल्यांकन होगा 0rand(0,5)वापस आ जाना चाहिए 5, $s[rand(0,5)]खाली स्ट्रिंग होगी (चूंकि $sकेवल पांच अक्षर लंबे हैं), और बाद में $$s[rand(0,5)]एक अनइंस्टाल्यूटेड चर होगा। उलटा लेने का प्रयास असमर्थित ऑपरेंड प्रकार पर रोक देगा। कोई अन्य मूल्य, 0-4वापस आ जाएगा s, और क्योंकि $sपरिभाषित किया गया है, आप जीवित रहेंगे।

नोट: PHP संस्करण 4.2.0 के रूप में, यादृच्छिक संख्या जनरेटर स्वचालित रूप से वरीयता प्राप्त है


6

आर 30

"I survived!"[6*runif(1)<5||Z]

छह में से एक बार, यह एक त्रुटि फेंक देगा: Error: object 'Z' not found


6

रूबी, 24-28

p rand(6)<5?"I survived!":1/0

प्रत्येक 6 बार लगभग, वहाँ एक है ZeroDivisionError

24 अक्षरों के साथ एक छोटा संस्करण भी है (बदसूरत और हिस्टोक्रेट के लिए धन्यवाद):

6/rand(6);p"I survived!"

यदि आप "आउटपुट में स्वीकार नहीं करते हैं , तो मुझे 3 और वर्ण चाहिए। पहला विकल्प ( puts) एक नई पंक्ति जोड़ता है, दूसरा ( $><<) कोई नई रेखा नहीं बनाता है:

6/rand(6);puts"I survived!"
6/rand(6);$><<"I survived!"

एसओ पर माणिक में यादृच्छिक संख्या के बारे में एक सवाल है । यदि बीज srandको वर्तमान समय से बीज के साथ स्वचालित रूप से कहा जाता है यदि यह पहले से ही नहीं था। ( जूलियंस टिप्पणी देखें )


प्राइमो के पास उन समाधानों के लिए एक अतिरिक्त बोनस के लिए विचार था जो शून्य से विभाजन पर भरोसा नहीं करते हैं

मेरा पहला समाधान एक के साथ (28 अक्षर) छोटा किया जा सकता है undefined local variable or method ``a' for main:Object (NameError)

p rand(6)<5?"I survived!":a

से भी छोटा हो सकता है 6/rand(6)
ugoren

क्या रूबी अपने आरएनजी को स्वचालित रूप से बीज देती है?
vsz

आप नियंत्रण प्रवाह को हटाकर एक और तीन वर्णों को ट्रिम कर सकते हैं:1/rand(6);p "I survived!"
histocrat

@ यूगोरेन / हिस्टोक्रेट आपके संकेतों के लिए धन्यवाद, मैंने अपने समाधान को अनुकूलित किया।
नूट

आप के लिए एक और बाइट: कोई भी सफेद स्थान के बीच की आवश्यकता है pऔर "I survived!"। मेरी गिनती से, यह केवल 24 बाइट्स है।
प्रिमो

6

दिल्लोग एपीएल - २५ २२ २१ २० चरचर्स

'I Survived!'⊣1÷6⊤?6

DOMAIN ERRORशून्य के द्वारा विभाजन के कारण त्रुटि के रूप में प्रिंट करता है।

शून्य समाधान द्वारा सबसे छोटा गैर-विभाजन मैं 23 वर्णों के साथ आ सकता हूं।

('I Survived!'1)[~6⍷?6]

यह एक फेंकता है INDEX ERROR

इसे यहाँ आज़माएँ

एपीएल फ़ॉन्ट यहाँ


मैं इसे स्वीकार करना चाहूंगा, लेकिन यह काम नहीं करता है। कुछ बार यह प्रिंट करता है " I survived", लेकिन एक बार प्रिंट करने के बाद DOMAIN ERROR, यह केवल प्रिंट करता रहता है। यहां तक ​​कि अगर मैं साइट को पूरी तरह से फिर से लोड करता हूं, तो यह फिर कभी नहीं बचेगा।
१३:१४

@vsz कितना अजीब है ... यह मेरे Dyalog APL WS में काम करता है, और मुझे याद है कि जब मैं किया गया था तब मैंने TryAPL के साथ इसका परीक्षण किया था। यह अभी भी मेरे दुभाषिया पर काम करता है, लेकिन वेबसाइट पर नहीं। इस में मदद करता है, तो: dl.dropbox.com/u/9086539/apl.png
MrZander

1
1÷0एक है DOMAIN ERRORDyalog में लेकिन NGN / एपीएल यह है में । से परिणाम ?61..6 है जब ⎕IO←1(Dyalog में डिफ़ॉल्ट) और 0..5 जब ⎕IO←0(केवल ngn / apl में विकल्प)। Dyalog में, PRNG को सेट करके रखा जा सकता है ⎕RL। प्रारंभ में इसका कुछ पूर्व-निर्धारित डिफ़ॉल्ट मान होता है। यदि आप सेट करते हैं ⎕RL←0, तो PRNG OS द्वारा काफी अप्रत्याशित रूप से फिर से सीड किया जाता है। TryAPL Dyalog का उपयोग कर रहा है और फ़ंक्शन का समर्थन करता ?है
ngn

1
यह बहुत संभव है कि कुछ को फिर से बदल दिया गया था, हम कभी-कभी ट्रायएपीएल के पीछे के सॉफ़्टवेयर को अपडेट कर रहे हैं या वेबसाइट की विशेषताओं के साथ प्रयोग कर रहे हैं। क्या मैं संबद्ध हूं? अगर मैं आपको बताता हूं, तो मुझे आपको मारना होगा ... ठीक है, 1
ngn

1
वैसे, यहाँ एक 18-चरित्र समाधान है: 'मैं बच गया!' ÷,
ngn

5

पायथन, 96

from ctypes import*
from random import*
randrange(5)or pointer(c_int())[9**9]
print'I survived!'

यदि randrange(5)रिटर्न 0 है, तो एक विभाजन दोष के कारण अजगर दुर्घटनाग्रस्त हो जाएगा।


5

वाबा, २,

?1/int(6*rnd),"I Survived!"

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


!पाठ में गुम ।
स्टेन्सलैग

@steenslag, फिक्स्ड
SeanC

@SeanCheshire मैंने आपके उत्तर के लिए एक विकल्प पेश किया है ।
गफ्फि

5

Befunge - 48 वर्ण

 v >91+"!devi"v
/?>?<v"I surv"<
 / / :
   :,_@#

Befunge का एकमात्र यादृच्छिकता ?ऑपरेटर है, जो आपको चार पॉसिबल दिशाओं ( 1/4संयोग) में से एक में हेडिंग भेजता है । एक या दो दिशाओं को अवरुद्ध करके, आपके पास 1/3या 1/2मौका है, और इनको मिलाकर, आपको 1/6"जीवित" प्रोग्राम से बाहर निकलने का मौका मिलता है।

कार्यक्रम एक दिव्य-बाय-ज़ीरो करके दुर्घटनाग्रस्त हो जाता है। मुझे लगता है कि यह कार्यान्वयन-विशिष्ट है कि क्या होगा (विकिपीडिया पर यह कहता है कि कार्यक्रम को वांछित उत्तर के लिए पूछना चाहिए), लेकिन befungee.py दुर्घटनाओं के प्रकार, या गुस्से से बाहर निकलता है:

$ for i in {1..6} ; do ./befungee.py roulette.befunge ; done
Error (1,2): integer division or modulo by zero
Error (3,2): integer division or modulo by zero
Error (1,2): integer division or modulo by zero
I survived!
Error (0,1): integer division or modulo by zero
I survived!

5

जे, १ 18

'I survived!'[q:?6

फैक्ट domain errorकरने की कोशिश करने पर असफल होना ०।


क्या J अपने RNG को स्वचालित रूप से बीज देता है?
विलेज

@vsz हाँ, के साथ ?। आप ?.निश्चित बीज के लिए उपयोग कर सकते हैं ।
यादृच्छिक

4

सी, 67 65 62 चर

rand()%8निष्पक्षता नहीं खोती। विभाजन दुर्घटनाग्रस्त होता है t=0, 1 और 2 के लिए सही होता है (पुनः प्रयास), 3..7 के लिए गलत देता है (जीवित)।
संपादित करें: पिछले संस्करण में एक अस्थायी चर का उपयोग किया गया था, जो पूरी तरह से अनावश्यक हो गया था। 2/(rand()%8)दोनों के लिए आवश्यक शर्तों को लागू करता है।

main(){
        for(srand(time(0));2/(rand()%8););
        puts("I survived!");
}

ऐसा होता है। "कोई अन्य आउटपुट की अनुमति नहीं है"
vsz

@vsz, किसी तरह से चूक गया। लेकिन वैसे भी, gcc / Linux के साथ यह कुछ भी प्रिंट नहीं करता है। इसके अलावा, मानक का सख्ती से पालन करना, यह आवश्यकता असंभव है, क्योंकि अपरिभाषित व्यवहार कुछ भी प्रिंट कर सकता है।
8

@vsz, अभी तय किया गया है - किसी भी मामले में कोई अतिरिक्त आउटपुट नहीं। अनुकूलन के साथ भी काम करता है, और 2 अक्षर छोटे होते हैं।
8

4

T-SQL 56 44 40 + 6

 if 1/cast(ceiling(rand()*6)-1as int)<2print'I Survived!'

क्रेडिट सीन चेशायर को बेकार करार देने के लिए

 if 1/ceiling(rand()*6-1)<2print'I Survived!'

सीन चेशायर से फर्श तक छत बदलने के सुझाव के लिए क्रेडिट व्यक्तिगत संदेश।

 if 1/floor(rand()*6)<1print'I Survived!'

डेथ एर्र Msg: Msg 8134, स्तर 16, राज्य 1, लाइन 3 शून्य त्रुटि से विभाजित।


1
-1और ceilingजरूरत नहीं है। castकाटना होगा
SeanC

अगर मैं समान वितरण के लिए आवश्यकता का उल्लंघन किए बिना छत को हटाया जा सकता हूं, तो मैं परीक्षण कर रहा हूं, डॉक्स का कहना है कि रैंड () फ्लोट वैल्यू 0 से 1. के माध्यम से
16

मैं जानना चाहता था कि क्या मेरी पहली प्रविष्टि से छत को हटाया जा सकता है। मैं टी-एसक्यूएल प्रलेखन से निर्धारित करने में असमर्थ था कि रैंड () फ़ंक्शन कभी भी 1 या नहीं लौटाएगा। इसलिए मैंने रैंड () फ़ंक्शन का परीक्षण करते हुए लगभग 50 मिलियन बार लूप चलाया, कभी भी एक बार इसे वापस नहीं किया। 1. लेकिन, मेरी पहली प्रविष्टि से सीलिंग को हटाकर अभी भी 47 बाइट्स होंगे, इसलिए मेरी दूसरी प्रविष्टि अभी भी छोटी है। सीलिंग रखें और कास्ट निकालें।
फ्रीवेरी

मुझे संदेह है कि आपने इस स्क्रिप्ट का 20 से अधिक बार परीक्षण किया है। यह हमेशा अपेक्षित परिणाम हमेशा नहीं देता है। 1 में 6 यह विफल हो जाएगा और आउटपुट वापस नहीं करेगा। यह वाक्य रचना काम करेगी: 0 / मंजिल (रैंड () * 6) = 0
t-clausen.dk

3

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

(Math.random()*6|0)?alert('i survived!'):b

बिटवाइज़ या फ़्लोरिंग गुणा का परिणाम इस प्रकार 0 और 5 परिणामों के बीच का मान होता है। 0 झूठे होने का आरोप लगाया जाता है, इसलिए 6 में से 5 मामलों में अलर्ट दिखाई देता है 6 वें मामले में एक निश्चित bको संदर्भित किया जाता है, इस प्रक्रिया को दुर्घटनाग्रस्त करता है।


3

शून्य विधि द्वारा सामान्य विभाजन का उपयोग करना:

पर्ल 5.8 संस्करण

1/(int rand 6)&&print "I survived!"

पर्ल 5.10 संस्करण

1/(int rand 6)&&say "I survived!"

विफलता पर, ये प्रदर्शित करेंगे:

Illegal division by zero at -e line 1.

आशीर्वाद फ़ंक्शन का उपयोग करना जो कि पर्ल में ऑब्जेक्ट बनाने के लिए उपयोग किया जाता है।

पर्ल 5.8 संस्करण

print (int rand 6?"I survived!":bless me);

पर्ल 5.10 संस्करण

say (int rand 6?"I survived!":bless me);

विफलता पर, ये प्रदर्शित करेंगे:

Can't bless non-reference value at -e line 1.

3
कुछ सुझाव: कोष्ठक, तार्किक &&और अतिरिक्त स्थान से छुटकारा पाएं । अभिन्न मूल्यों को बल देने के ~~बजाय उपयोग करें int। इसका परिणाम यह है:1/~~rand 6;print"I survived!"
ardnew

3

GolfScript, 21 वर्ण

,6rand/;'I survived!'

अधिकांश उत्तरों की तरह, इस एक के पास ज़ीरोविज़न ईसर के साथ दुर्घटनाग्रस्त होने के छह अवसरों में से एक है। शून्य से विभाजन का उपयोग किए बिना जो सबसे छोटा समाधान मैं प्रबंधित कर सकता हूं वह है 23 चार्ट:

5,6rand=+;'I survived!'

जिसके साथ दुर्घटनाग्रस्त होने का 1/6 मौका है undefined method `+' for nil:NilClass (NoMethodError)

(Ps। इसे विकसित करते समय, मैंने पाया कि गोल्फस्क्रिप्ट दुभाषिया में एक बग क्या हो सकता है: जैसे कि स्टैक पर मान 0,1>छोड़ने के लिए कोड दिखाई देता है nil, जो बाद में प्रोग्राम को क्रैश कर देगा यदि आप उस मान के साथ कुछ भी करने की कोशिश करते हैं, तो पॉप को छोड़कर इसे फेंक दो ;। दुर्भाग्य से, इस तथ्य से कि मुझे किसी दुर्घटना को ट्रिगर करने के लिए किसी भी तरह से मूल्य का उपयोग करने की आवश्यकता है इसका मतलब है कि इस बग का शोषण करने से मुझे 23 चार्ट से नीचे जाने में मदद नहीं मिली।)


यह निश्चित रूप से एक बग की तरह लगता है। स्टैक पर 5,5>छोड़ देता है [], जो शायद यह है कि क्या करना चाहिए, लेकिन 4,5>छोड़ देता है nil। यदि आप इसे नहीं हटाते हैं, तो दुभाषिया इसे आउटपुट करने की कोशिश करते समय वास्तव में दुर्घटनाग्रस्त हो जाएगा। एक दिलचस्प दुष्प्रभाव यह है कि 4,6rand>+;'I survived!'एक वैध समाधान बन जाता है। किसी को शायद फ्लैगिटियस को सूचित करना चाहिए।
प्राइमो

1
मैंने इसकी रिपोर्ट की, और इसे गोल्फस्क्रिप्ट दुभाषिया के नवीनतम संस्करण में तय किया गया है (एक और बग के साथ मैं भर में ठोकर खाई)।
इल्मरी करोनें

3

अजगर, 70 वर्ण

Grc के उत्तर से प्रेरणा के साथ।

from random import*
if randrange(5)<1:exec'()'*9**5
print'I survived!'

randrange (5) 0 और 5 के बीच का मान देता है।
यदि यह 0 देता है, तो पायथन कोड के एक स्ट्रिंग को निष्पादित (ute) करने का प्रयास करते समय क्रैश हो जाता है, जिसमें 9 ^ 5 सेट कोष्ठक होते हैं।


3

PHP - 30 बाइट्स

<?rand(0,5)?:~[]?>I survived!

लघु सरणी सिंटैक्स के लिए PHP 5.4+ की आवश्यकता है, अवैध ऑपरेटर विचार बेशर्मी से @primo से चुराया गया है।

जैसा कि कहा गया है, rand()स्वचालित रूप से पहले उपयोग पर वरीयता प्राप्त है


शून्य से विभाजन रुकता नहीं है, यह केवल एक चेतावनी देता है, साथ ही पाठ 'मैं बच गया!'। इसके अलावा, rand()%6एक समान वितरण नहीं है, जैसा कि 32768 = 2 (mod 6)। हालाँकि, rand(0,5)||~$a30 बाइट्स के लिए है, और इसके अलावा सभी PHP संस्करणों के साथ काम करेंगे (एक ternary में दूसरी अभिव्यक्ति केवल 5.3.0+ में वैकल्पिक है)।
प्राइमो

@primo लगता है कि मैं केवल स्टैक ट्रेस के लिए देख रहा था जब मैं शून्य से विभाजन को जाँच रहा था, यह अभी भी मुद्रित नहीं देखा। मुझे पता है कि टर्नरी शॉर्टहैंड 5.3+ है, लेकिन मुझे वास्तव में तारीखों से बाहर लंबे समय तक समर्थन करने में कोई दिलचस्पी नहीं है :)
Leigh

कि मैं इससे सहमत हूं। इस बिंदु पर 5.3 से कम का उपयोग जारी रखने के लिए कोई मान्य तर्क नहीं है। 5.4, ​​मैं अभी भी दोहरे अंकों की संशोधन संख्या के लिए बाहर हूँ।
प्राइमो

1
मैं 29 बाइट्स गिनता हूं।
टाइटस

3

बेफुज, ३ 38

v>25*"!devivrus I",,,,,,,,,,,@
?^
v
?^
<1

बहुत सीधा। जब तक यह ओवरफ्लो न हो जाए तब तक स्टैक पर 1s धक्का देकर क्रैशिंग किया जाता है। मैंने उन 11 कॉमाओं को काटने और कुछ और कुशल लूप के साथ उन्हें बदलने के लिए कुछ प्रयास किए, लेकिन यह 11 वर्णों के तहत नहीं हो सका।

ध्यान दें कि Befunge में वर्णों को गिनना थोड़ा मुश्किल है ... उदाहरण के लिए, तीसरी पंक्ति पर केवल एक वर्ण है, लेकिन मैं एक अतिरिक्त गिनती कर रहा हूं, क्योंकि निष्पादन उस स्थान के माध्यम से यात्रा कर सकता है।


मेरा मानना ​​है कि मैंने कभी किसी कार्यक्रम में सबसे अधिक कॉमास के लिए रिकॉर्ड बनाया है।
जो जेड

और फिर मैं देख रहा हूं कि वास्तव में बेफ्यूज कैसे काम करता है और मेरा चेहरा ताड़ता है ।
जो जेड

2

सीएमडी शेल (विन XP या बाद में), 40 +6

मैं केवल यह एक कर रहा हूं क्योंकि डॉस कुछ ऐसा नहीं है जिसे कोड गोल्फ के लिए भी सोचा जाना चाहिए, और व्हॉट्सएप महत्वपूर्ण है

set/a1/(%RANDOM% %% 6)&&echo I Survived!

असफल होने पर, यह प्रिंट होगा

शून्य त्रुटि से विभाजित करें।


2

आर, ५० ४४ ४२ ३६

ifelse(!is.na(sample(c(NA,1:5),1)),'I Survived!',)

ifelse(floor(runif(1,0,5))>0,'I Survived!',)

ifelse(floor(runif(1,0,5)),'I Survived!',)

ifelse(sample(0:5,1),'I Survived!',)

मौत का संदेश:

Ifelse में त्रुटि (। Is.na (1 / नमूना (c (NA, 1: 5), 1)), "I I Survived!",): तर्क "नहीं" गायब है, कोई डिफ़ॉल्ट नहीं है


मैंने आर की कोशिश की, और इसे विफल करने के लिए नहीं मिल सका - if(1/0)"I Survived!"अभी भी मुद्रित मैं बच गया
SeanC

अन्य भाषाओं के विपरीत, आर 1/0 को गणित की त्रुटि नहीं मानता है और निष्पादन को नहीं रोकता है, यह सिर्फ 1/0 के लिए रिटर्न देता है। मुझे लगता है कि @vsz इस दौर के लिए ब्रेकिंग एरर चाहता है। लेकिन बनामज़ को मौत की त्रुटि के रूप में एनए गिना जाता है, मैं अपने कार्यक्रम को 41 वर्णों तक नीचे ले जा सकता हूं: ifelse (नमूना (सी (एनए, 1: 5), 1), 'मैं जीवित रहा',)
23


2

जावास्क्रिप्ट, 40 वर्ण

जावास्क्रिप्ट में डिवाइड-बाय-जीरो ट्रिक भी काम नहीं करता है: यह सिर्फ इन्फिनिटी देता है। इसलिए, एक गैर-मौजूदा चर का संदर्भ:

alert(6*Math.random()|0?"I survived!":f)

इतना छोटा नहीं है, हालांकि मज़ा :)



2

TI-BASIC (TI-84 + / SE), 36 बाइट्स

startTmr→rand:1/(1<randInt(1,6:"I survived!

कोई इनपुट नहीं है, जैसा कि चुनौती निर्दिष्ट करती है।
आउटपुट I survived!सफल है, तो एक DIVIDE BY 0त्रुटि अन्यथा।

DIVIDE BY 0निम्नलिखित की तरह त्रुटि स्क्रीन दिखता है:

ERR:DIVIDE BY 0
1:Quit
2:Goto

प्रोग्राम कॉल के बाद या तो विकल्प का चयन करना (और 2चयनित होने पर होम स्क्रीन पर लौटना ) Error

उदाहरण:

prgmCDGFE
           Error
prgmCDGFE
I survived!
prgmCDGFE
I survived!
prgmCDGFE
           Error

स्पष्टीकरण:

startTmr→rand:1/(1<randInt(1,6:"I survived!   ;full program

startTmr→rand                                 ;store the current time into "rand"
                                              ; this is necessary because "rand" is 0 after
                                              ; factory reset, the default state for TI-BASIC
                                              ; submissions
                   randInt(1,6                ;get a random integer in [1,6]
                 1<                           ;is greater than 1?  1 if true, 0 if false
              1/(                             ;divide 1 by the result
                                              ; throws "DIVIDE BY 0" error if result was
                                              ; false
                               "I survived!   ;leave this string in "Ans"
                                              ;implicitly print "Ans"

टिप्पणियाँ:

  • TI-BASIC एक टोकन भाषा है। बाइट काउंट में कैरेक्टर काउंट नहीं के बराबर होता है ।

  • लोअरकेस अक्षर दो बाइट्स हैं।

    • इस विधानसभा कार्यक्रम का उपयोग करके लोअरकेस अक्षर को सक्षम किया जा सकता है ।
  • startTmrकेवल TI-84 + और TI-84 + SE कैलकुलेटर पर एक कमांड है। कहा कैलकुलेटर में अलग-अलग ऑपरेटिंग सिस्टम हैं।


2

पायथन, 53 बाइट्स

यहाँ एक छोटा 53 बाइट अजगर सूचकांक रेंज प्रोग्राम से बाहर है:

import time
[0][time.time()%6<1]
print("I survived!")

नमस्ते और स्वागत है। कृपया ध्यान दें कि इस चुनौती के नियमों में, यह कहा गया है कि "MOD 6 पर्याप्त नहीं होगा।" हालाँकि मैं पायथन से परिचित नहीं हूँ, यह मुझे ऐसा लग रहा है जैसे आप यहाँ मोडुलो का उपयोग कर रहे हैं।
शॉन बेयबर्स

1
@ShaunBebbers यह उद्धरण है "इसका अर्थ है एक अनइंस्टाल्यूटेड वैरिएबल (या बिना बीज वाला RNG) MOD 6 पर्याप्त नहीं होगा", लेकिन यह मेटा पोस्ट कहता है कि वर्तमान समय का मोड्यूल कोड-गोल्फ के लिए PRNG के लिए पर्याप्त है
स्टीफन

मेरी गलतफहमी तब।
शॉन बेयबर्स

1

जावा, 149

public class R{public static void main(String[]s){int[]a={1,1,1,1,1};System.out.println(a[new java.util.Random().nextInt(7)]>0?"I survived!":"");}}

"सीमा से बाहर सरणी" त्रुटि के साथ विफल। अनाम रैंडम ऑब्जेक्ट (कोई आयात नहीं) का उपयोग करके कुछ वर्णों को शेव करने का प्रबंधन।


1

ग्रूवी, 39

1/new Random().next(6);print"I survived!"

0 और 5 के बीच एक यादृच्छिक संख्या को सम्मिलित करता है। यदि 0, शून्य अपवाद द्वारा विभाजन को फेंकता है।


1

पायथन (56), हास्केल (77)

जब उत्पन्न संख्या 1 हो तो यह IndexError के साथ क्रैश हो जाता है:

यादृच्छिक आयात से *
प्रिंट ['मैं बच गया!'] [1 / रैंडिंट (1,7)]

हास्केल समाधान का एक ही विचार है:

आयात प्रणाली
main = putStrLn। (["मैं बच गया!"] !!)। div 1 = << randomRIO (1,6)

1

पायथन, 59 55 53, 65 59 56

import os
1/(ord(os.urandom(1))%6)
print"I survived!"

ZeroDivisionErrorजब ord(os.urandom(1))%60 का मूल्यांकन करता है

import os
print(["I survived!"]*5)[ord(os.urandom(1))%6]

IndexErrorजब ord(os.urandom(1))%65 का मूल्यांकन करता है


आयात को बदलकर 5 वर्णों को सहेजें: import random as rफिर उपयोग करेंr.randint
स्टीवन रूंबल्स्की

1
या आयात को बदलकर 8 वर्णों को सहेजें import os, फिर ord(os.urandom(1))%6अपने यादृच्छिक int के रूप में उपयोग करें।
स्टीवन रूंबलकी

के बाद अंतरिक्ष को हटाकर 1 वर्ण सहेजें print
स्टीवन रूंबल्स्की

1

VBA - 39/46

मुझे सीन चेशायर के संख्यात्मक आउटपुट से प्यार नहीं है (हालांकि अभी भी एक अच्छा जवाब है, यह तकनीकी रूप No input, and no other outputs are allowed.से कल्पना से विफल होता है ...), साथ ही वह उपयोग करता है /0, इसलिए यहां मेरे विकल्प हैं:

?Mid("I Survived!",IIf(Int(6*Rnd),1,0))

यह Run-time error '5': Invalid procedureवर्ण 0 (VBA 1-आधारित अनुक्रमणिका) तक पहुँचने का प्रयास करते समय हल करता है ।

n="I Survived!":If Int(6*Rnd) Then ?n Else ?-n

यह Run-time error '13': Type mismatchएक स्ट्रिंग पर एक नकारात्मक स्विच लगाने पर हल करता है ।


1

जाप v1.4.5, 16 बाइट्स

6ö
ªí
`I s¨viv!

कोशिश करो

-1 बाइट @ शुगी को धन्यवाद!

TypeError: U.í is not a functionसीमा में एक यादृच्छिक संख्या होने पर फेंकता [0,6)है 0



वास्तव में, इसके लिए v1.4.5 का उपयोग करना एक विचार हो सकता है, बस अगर ईटीएच N.í()v1.4.6 में एक विधि जोड़ता है ।
झबरा

अपडेट किया गया - जाप अजीब कार्यक्रमों पर दुर्घटना न करने की कोशिश करता है। मैं यह जानने की कोशिश कर रहा था कि एक ऐसे चर का संदर्भ कैसे दिया जाए जो मौजूद नहीं था (AZ परिभाषित है), लेकिन एक ऐसी विधि को कॉल करने पर विचार नहीं किया जो मौजूद नहीं थी।
दाना

हाँ, N.í()एक त्रुटि फेंकने के लिए मेरा "जाना" है (यह हुआ करता था N.y())। एक त्रुटि प्राप्त करने के कुछ अन्य तरीके हैं लेकिन वे शायद ही कभी उपयोगी हैं।
झबरा

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