एक और जीवन में मिलते हैं, ब्रोथा!


12

हममें से ज्यादातर LOST प्रशंसक कंप्यूटर को याद करते हैं कि डेसमंड को हर ४० मिनट में "४ LO १५ १६ २३ ४२" अक्षर लिखने थे या दुनिया खत्म हो जाएगी (या ऐसा होगा?)।

यहां चुनौती यह है कि एक ऐसा प्रोग्राम बनाया जाए, जिसमें यह आवश्यक हो कि प्रत्येक 108 सेकंड में इनपुट 4 8 15 16 23 42दर्ज किया जाए या यह संदेश प्रदर्शित होगा

Sorry, the world has ended with status code -1

यह उपयोगकर्ता को 100 सेकंड पर चेतावनी देनी चाहिए कि उन्हें संदेश के साथ एक नंबर दर्ज करने की आवश्यकता है

Enter, Quick!

कार्यक्रम को किसी भी समय इनपुट पढ़ने में सक्षम होना चाहिए और यदि यह सही इनपुट है तो यह टाइमर को रीसेट कर देगा। अगर गलत इनपुट दिया जाता है तो कुछ नहीं होता है।

कार्यक्रम अनिश्चित काल तक चलना चाहिए। तो अंतिम वैध इनपुट के बाद की टाइमलाइन दिखती है

0 से 99 सेकंड तक:
100 सेकंड में कोई आउटपुट नहीं : Enter, Quick!
108 सेकंड पर Sorry, the world has ended with status code -1:।

यह कोड गोल्फ है इसलिए सबसे छोटा उत्तर (बाइट्स में) जो इस कार्य को पूरा करता है! शुभ लाभ!


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

2
सही चित्रलिपि के आउटपुट के लिए बोनस अंक होने चाहिए।
जिज्ञासु

चुनौती को फिर से पढ़ने के बाद, मुझे यकीन नहीं है कि अब मैंने इसकी सही व्याख्या की है। "दुनिया खत्म हो गई" के बाद क्या होना चाहिए?
डेनिस

1
एक खो-खो के रूप में, मुझे लगता है कि डेसमंड को टाइमर खत्म होने से पहले 4 मिनट (240 सेकंड) में प्रवेश करने के बारे में चेतावनी दी जाएगी।
जेम्स

जवाबों:


10

बैश, 160 बाइट्स

I()($s 100&&echo Enter, Quick!&$s 108&&echo Sorry, the world has ended with status code -1&)
i()(read r;[[ $r = '4 8 15 16 23 42' ]]&&pkill $s&&I;i)
s=sleep;I;i

मैं वर्तमान में अनिश्चित हूं कि "दुनिया समाप्त हो गई" के बाद अपेक्षित व्यवहार क्या है।

इस तरह से चलाएं:

bash lost.sh 2>&-

2>&-STDERR को अनदेखा करना आवश्यक है, जो डिफ़ॉल्ट रूप से अनुमत है


2

आधुनिक-ब्राउज़र जावास्क्रिप्ट, 252 247 242 बाइट्स

n=t=>Date.now()+(t?0:1e5)
d=n(i=f=0)
onkeyup=e=>{if("4 8 15 16 23 42".charCodeAt(i%15)==e.keyCode&&++i%15<1)d=n(f=0)}
setInterval('if(n(1)>d&&f<2)d=n(1)+8e3,console.log(f++?"Sorry, the world has ended with status code -1":"Enter, Quick!")',9)

निर्देश: इसे एक खाली टैब के कंसोल में चलाएँ, फ़ोकस हासिल करने के लिए इसके दस्तावेज़ पर क्लिक करें और बार-बार स्ट्रिंग टाइप करना शुरू करें। जब तक आप अच्छा कर रहे हैं, तब तक आपको कोई प्रतिक्रिया नहीं मिलेगी। चीजों को और अधिक रोचक बनाने के लिए 1e5 से 1e4 को ताज़ा करें और बदलें।


1

ग्रूवी, 244 या 228 बाइट्स

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

t=Thread.start{while(1)try{Thread.sleep(1e5);println "Enter, Quick!";Thread.sleep(8e3);println "Sorry, the world has ended with status code -1";System.exit(-1)}catch(e){}};while(1)if(System.console().readLine()=="4 8 15 16 23 42")t.interrupt()

यह मानता है कि समाप्त होने वाली दुनिया के लिए उचित व्यवहार -1 की स्थिति कोड के साथ बाहर निकलने की प्रक्रिया के लिए है। यदि इरादा व्यवहार लूपिंग रखने का है और दुनिया (और विस्तार, कार्यक्रम) को समाप्त करने के लिए एक बाहरी बल की अपेक्षा करता है, तो ;System.exit(-1)भाग को 16 बाइट्स को बचाने के लिए छोड़ा जा सकता है। वाह।

मैंने मूल रूप से इसे स्ट्रिंग के हैशकोड का उपयोग करने के लिए लिखा था, लेकिन यह लंबे समय तक घाव करता है एक सटीक तुलना स्ट्रिंग एम्बेड करने से क्योंकि hashCodeहै लंबे समय तक।


1

एपीएल (डायलॉग यूनिकोड) , 144 बाइट्स SBCS

जैसा कि यह पता चला है, दोनों पक्ष APL चला रहे हैं ...

:For t:In 100 8
:For s:Int
→{1E3::⍬⋄⍳⍞≡⍕4 8 15 16 23 42}⎕RTL1
:End
'Enter, Quick!' 'Sorry, the world has ended with status code -1'⌽⍨t=8
:End

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

:For t:in 100 8 दो बार लूप, एक बार t(टिमपुत) होने के 100साथ और फिर tजैसा8 :

:For s:In⍳t के लिए s(econds) 1के माध्यम से और सभी ɩ ndices तकt

  ⎕RTL←1आर एस्पोन टी ime एल  सेट करें 1 के लिए imit (दूसरा)

  {...}  निम्नलिखित अनाम लंबोदर पर लागू करें (हालांकि यह तर्क अप्रयुक्त है)

   1E3:: निम्नलिखित में, यदि कोई अपवाद होता है:

     वापसी []

    प्रयत्न:

    ⍕4 8 15 16 23 42 आवश्यक संख्याओं को कठोर करें

    ⍞≡ इनपुट के लिए संकेत और उसकी तुलना (0 या 1 देता है)

     पहले कि कई ices ndices ( []या [1] `

   उस लाइन पर जाएं (1 यदि [1], अगली पंक्ति पर जारी रखें यदि [])

:End आंतरिक लूप का अंत; मौजूदा टाइमआउट के अगले सेकंड के साथ आगे बढ़ें

t=3 क्या यह दूसरा टाइमआउट है (0 या 1)?

 ... ⌽⍨ निम्नलिखित को घुमाएं कि कई कदम:

  'Enter, Quick!' 'Sorry, the world has ended with status code -1' संक्षेप में उपयुक्त पाठ मुद्रित करें

 खुलासा (प्रमुख और अनुगामी अंतरिक्ष के बिना मुद्रित करने के लिए)

:End बाहरी लूप का अंत: चेतावनी के बाद, लूप; "क्षमा करें ..." प्रिंट करने के बाद, कार्यक्रम समाप्त करने के लिए आगे बढ़ें


0

C ++ (gcc) , 395 बाइट्स

लिनक्स पर संकलन के लिए -pthreadस्विच की आवश्यकता होती है । MinGW बिना करता है।

#import<iostream>
#import<thread>
using namespace std;auto N=chrono::steady_clock::now;auto L=N();int w;int main(){thread A([]{for(;;){auto t=chrono::duration_cast<chrono::seconds>(N()-L).count();t>99&&!w?puts("Enter, Quick!"),w=1:t>107?exit(puts("Sorry, the world has ended with status code -1")),0:0;}}),B([]{for(string s;;s=="4 8 15 16 23 42"?L=N(),w=0:0)getline(cin,s);});A.join();B.join();}

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

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