दौड़ उलटी गिनती खींचें


10

चुनौती:

एक काल्पनिक परिदृश्य में, एक दौड़ के लिए उलटी गिनती घड़ी में समय से पहले शुरू करने से रोकने के लिए, गिनती के बीच यादृच्छिक अंतराल होता है, आदि।

3 (0.82 seconds pass), 2 (0.67 seconds pass), 1

इनपुट:

कुछ भी तो नहीं


आउटपुट:

एक प्रोग्राम (या फ़ंक्शन) लिखें जो प्रत्येक संख्या के बीच 0.50 सेकंड से 1 सेकंड तक यादृच्छिक समय अंतराल के साथ 3 संख्याओं को प्रिंट करता है।


ध्यान दें:

  • कार्यक्रम को प्रत्येक संख्या (3, 2, 1) को यादृच्छिक के साथ ( किसी भी संख्या को 0.50 और 1 से सौवें के बीच; कोई हार्ड-कोडिंग) समय अंतराल के बीच प्रत्येक के साथ आउटपुट करना होगा । यादृच्छिक अंतराल की सटीकता सैकड़ों (जैसे: 0.52) के लिए बाहर जाना चाहिए। आपको केवल अंतराल की गणना करने के लिए आउटपुट की आवश्यकता नहीं है।
  • जैसा कि @JoKing ने स्पष्ट किया है, मेरा मतलब है समान रूप से यादृच्छिक (आप अपनी भाषा के छद्म यादृच्छिक जनरेटर का उपयोग कर सकते हैं।
  • जैसा कि कई लोगों ने स्पष्ट किया है, मेरा वास्तव में 0.5 और 1. के बीच किसी भी 2-दशमलव संख्या का मतलब है (0.50, 0.51, आदि, सभी तरह से 0.98, 0.99, 1)

यह , इसलिए सबसे कम बाइट गिनती जीत वाला कार्यक्रम।


4
हाय लॉर्डकोलस, और पीपीसीजी में आपका स्वागत है! यह एक अच्छी पहली चुनौती की तरह लगता है। भविष्य की चुनौतियों के लिए, हम सभी विवरणों को जानने के लिए पहले सैंडबॉक्स से गुजरने की सलाह देते हैं ।

1
@ लॉर्डकोलस: मैंने मूल वक्तव्य और कुछ अन्य संपादनों में सुधार किया, एक नज़र डालें और यदि आप चाहें तो अनुमोदन करें।
मुहम्मद सलमान

1
जैसा कि मैंने पिछली टिप्पणी में कहा था कि हटा दिया गया है, "समान रूप से यादृच्छिक" निर्दिष्ट करना ठीक है यदि आप परिशुद्धता के साथ बहुत कड़े नहीं हैं। जैसा कि यह अब खड़ा है, ठहराव समय दो दशमलव की सटीकता के साथ एक समान होना चाहिए (या यह कम से कम दो दशमलव है?)। क्या इसका मतलब यह है कि वितरण को 0.5, 0.51, 0.52, ..., 1 के सेट पर समान होना चाहिए, या क्या यह कोई फ्लोटिंग पॉइंट (संभवतः दो डेसीमल से अधिक) 0.5 और 1 हो सकता है?
लुइस मेंडो

2
क्या मेरा सबसे हालिया संपादन इसे स्पष्ट करता है?
लॉर्डकॉलस

6
@ mbomb007 वही ... यह फिर से बंद क्यों हो गया? यह मूल रूप से दो से .50-1.00 सेकंड के बीच में 3 से 1 तक गिना जाता है। यह वास्तव में जटिल नहीं है।
मैजिक ऑक्टोपस Urn

जवाबों:



2

स्माइलबासिक, 64 62 बाइट्स

?3M?2M?1DEF M
M=MILLISEC
WHILE MILLISEC<M+500+RND(501)WEND
END

दुर्भाग्य से मैं WAIT का उपयोग नहीं कर सकता क्योंकि केवल एक सेकंड के 1/60 के अंतराल का समर्थन करता है (कुछ भी सामान्य रूप से उपयोगी नहीं है क्योंकि इनपुट / आउटपुट केवल एक बार फ्रेम में अपडेट होता है)

इसके लिए उसके द्वारा चलाए जा रहे सिस्टम की गति के आधार पर समायोजन की आवश्यकता होती है, इसलिए यह मान्य नहीं हो सकता (46 बाइट्स):

?3M?2M?1DEF M
FOR I=-66E4-RND(66E4)TO.NEXT
END

अमान्य WAIT संस्करण (36 बाइट्स):

?3WAIT 30+RND(30)?2WAIT 30+RND(30)?1

2

आर , 46 44 बाइट्स

एक वास्तविक उलटी गिनती के लिए:

for(i in 3:1){cat(i)
Sys.sleep(runif(1,.5))}

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

मुद्रण अंतराल के रूप में मैं शुरू में चुनौती को गलत समझा (46 बाइट्स) 2 चार्ट को बचाने के लिए धन्यवाद Giuseppe

for(i in 3:1)cat(i,format(runif(1,.5),,2)," ")

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


मेरा मानना ​​है runif()कि डिफ़ॉल्ट रूप में क्रमशः 0और 1क्रमशः बाएं और दाएं छोर हैं, इसलिए runif(1,.5)दोनों में -2 बाइट्स के लिए समान काम करना चाहिए।
ग्यूसेप

अच्छी पकड़ धन्यवाद @Giuseppe
JayCe

2

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

from time import*
for a in'321':print a;sleep(1-time()%.5)

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

मैंने एक बहुत ही सरल यादृच्छिक संख्या जनरेटर बनाया जो बीज समय लेता है (जैसा कि कई लोग करते हैं)।


सुधार


1-time()%.5चाल चलनी चाहिए। (आप की जरूरत [3,2,1]है)
जोनाथन एलन


@JonathanAllan बहुत अच्छा बिंदु, अद्यतन।
नील

यह उलटी गिनती से पहले भी एक बार सोता है। मुझे लगता है कि आपको सोने से पहले प्रिंट स्टेटमेंट चाहिए।
मैजिक ऑक्टोपस Urn

@MagicOctopusUrn सहमत, अद्यतन।
नील


1

जावा 8, 86 बाइट्स

v->{for(int i=0;++i<4;Thread.sleep((int)(Math.random()*500+500)))System.out.print(i);}

बिना परिसीमन के प्रिंट। यदि यह अनुमति नहीं है यह बदलकर 2 बाइट्स है printकरने के लिए println(नई लाइन सीमांकक)।

इसे ऑनलाइन आज़माएं।
मान लें कि अंतराल [500, 1000)एमएस की सही सीमा में हैं ।

स्पष्टीकरण:

v->{                        // Method with empty unused parameter and no return-type
  for(int i=0;++i<4;        //  Loop in range [1,4)
      Thread.sleep((int)(Math.random()*500+500)))
                            //    After every iteration: sleep for [500, 1000) ms randomly
     System.out.print(i);}  //   Print the current number

1

पायथन 3, 122 बाइट्स

import random as r,time
def w():time.sleep(abs(r.random()-.5)+.5)
print(3,end="");w();print(", 2",end="");w();print(", 1")

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


6
आपको आयात की आवश्यकता है
जोनाथन एलन


ओह! यह तय हो गया है।
hakr14

1

जावास्क्रिप्ट (Node.js) , 75 65 60 बाइट्स

  • 10 बाइट्स कम करने के लिए @ शगुन का शुक्रिया
  • 5 बाइट्स कम करने के लिए @ केविन क्रूज़सेन को धन्यवाद
f=(i=3)=>i&&setTimeout(f,Math.random()*500+500,i-1,alert(i))

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



1
@ यदि आप दिनांक का उपयोग कर रहे हैं तो यह वास्तव में यादृच्छिक होगा? (दूसरी बार यादृच्छिक रूप से हुई)
डैनियलइंडी

1
क्यों *1000%500+500? आप बस उपयोग कर सकते हैं *500+500
केविन क्रूज़सेन

कल्पना के अपडेट के साथ, यह शायद यादृच्छिक रूप से पर्याप्त नहीं होगा, लेकिन यह स्पष्टीकरण के लिए पूछने के लायक हो सकता है।
झबरा

1

पर्ल 5 , 39 बाइट्स

धीरे-धीरे 39 बाइट्स तक नीचे की ओर, @ jonathan-allan + @xcali की बदौलत।

say-$_+select$a,$a,$a,1-rand.5for-3..-1

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


1
1-rand(.5)काम करेगा ?
जोनाथन एलन

अच्छा विचार। तब 1-rand.5भी उपयोग कर सकते हैं।
स्टीव

1
पार्न्स को हटाकर और नकारात्मक होने के लिए काउंटर को बदलकर चार और बाइट्स काटें। इसे ऑनलाइन आज़माएं!
Xcali

1

चिप -wingjj , 33 बाइट्स

0123456e7f s
???????p*9S!ZZZtaABb

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

चिप में, हम वास्तव में के लिए इंतजार नहीं कर सकता 1 / 100 एक दूसरे की, लेकिन हम के लिए प्रतीक्षा कर सकते हैं 1 / 256 तो हम है कि यहाँ का उपयोग एक दूसरे की,।

p, पूछे जाने पर, स्टैक हेड (एक बाइट) के लिए निष्पादन को रोक देगा * 1 / 256 सेकंड। प्रत्येक चक्र पर, हम हमेशा ढेर (के उच्च बिट सेट 128 / 256 ) और (के साथ बेतरतीब ढंग से अन्य सभी ढेर बिट्स सेट ?की)। यह 0.50 और 1.00 सेकंड के बीच एक समान वितरण देता है।

आर्ग में से कुछ, -wऔर -gjj, निर्दिष्ट करें कि इनपुट, बजाय stdin का उपयोग कर के, से एक उलटी गिनती होना चाहिए 0xFFकरने के लिए 0x00(तब लपेटकर)। हम इसका उपयोग नीचे की गिनती के लिए कम दो बिट्स प्रदान करने के लिए करते हैं। अन्य सभी आउटपुट बिट्स स्थिर रहते हैं (ASCII के मूल्य पर 0)।

अंत में, एक बार जब हम कर लेते हैं, तो हम tअंतिम संख्या के बाद एक ठहराव को रोकने के साथ कार्यक्रम को समाप्त कर देते हैं ।


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