রেস কাউন্টডাউন টেনে আনুন


10

চ্যালেঞ্জ:

কাল্পনিক দৃশ্যে, একটি দৌড়ের জন্য কাউন্টডাউন টাইমার অকাল শুরুর রোধ করতে গণনাগুলির মধ্যে এলোমেলো বিরতি থাকে, যেমন

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

ইনপুট:

কিছু না


আউটপুট:

এমন একটি প্রোগ্রাম লিখুন (বা ফাংশন) যা প্রতিটি সংখ্যার মধ্যে 0.50 সেকেন্ড থেকে 1 সেকেন্ড থেকে এলোমেলো সময়ের ব্যবধান সহ 3 নম্বর প্রিন্ট করে।


বিঃদ্রঃ:

  • প্রোগ্রামটি অবশ্যই প্রতিটি সংখ্যার (3, 2, 1) এলোমেলোভাবে ( 0.50 এবং 1 এর মধ্যে শতকের দশকের মধ্যে যে কোনও সংখ্যা; কোনও হার্ড-কোডিং নয়) প্রতিটি সময়ের মধ্যে সময়ের ব্যবধানের সাথে আউটপুট দেয়। এলোমেলো ব্যবধানের যথার্থতা অবশ্যই কয়েকশোকে যেতে হবে (উদা: 0.52)। আপনার বিরতি আউটপুট প্রয়োজন হয় না, শুধুমাত্র গণনা।
  • @ জোকিং স্পষ্ট হিসাবে, আমার অর্থ অভিন্ন র্যান্ডম (আপনি নিজের ভাষার সিউডো-এলোমেলো জেনারেটর ব্যবহার করতে পারেন)।
  • যেহেতু অনেক লোক স্পষ্ট করে দিয়েছে, আমি সত্যিই 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 একই ... কেন এটি আবার বন্ধ হল? এটি মূলত 3 থেকে 1 এর মধ্যে দুটি .50-1.00 সহ দ্বিতীয়টির মধ্য দিয়ে দ্বিতীয় অপেক্ষা করে count এটি আসলেই জটিল নয়।
ম্যাজিক অক্টোপাস উরন

উত্তর:


5

05 এ বি 1 ই , 12 বাইট

3LRε=₄D;ŸΩ.W

এটি অনলাইন চেষ্টা করুন!


3LR          # Push [3,2,1]
   ε         # For each...
    =        # Print it.
     ₄       # Push 1000.
      D      # Duplicate top (1000).
       ;     # Divided by 2 (500).
        Ÿ    # Range from b to a ([1000 .. 500]).
         Ω   # Random pick.
          .W # Wait X ms.

এটি ডিবাগ সক্ষম সহ চেষ্টা করুন : এটি অনলাইনে চেষ্টা করুন!


2

SmileBASIC, 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 টি অক্ষর সাশ্রয় করার জন্য জিউসেপকে ধন্যবাদ ।

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

এটি অনলাইন চেষ্টা করুন!


আমি বিশ্বাস করি runif()ডিফল্ট হিসাবে যথাক্রমে 0এবং 1যথাক্রমে বাম এবং ডান প্রান্ত থাকে , সুতরাং runif(1,.5)উভয় -2 বাইটের জন্য একই কাজ করা উচিত।
জিউসেপে

জিউসেপ্পকে ধন্যবাদ খুব ভাল
জেসি

2

পাইথন 2 , 58 বাইট

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

এটি অনলাইন চেষ্টা করুন!

আমি একটি খুব সাধারণ এলোমেলো সংখ্যা জেনারেটর তৈরি করেছি যা বীজের সময় নেয় (যতটা মানুষ করেন)।


উন্নতি


1-time()%.5কৌতুক করা উচিত। (আপনাকে অবশ্যই প্রয়োজন [3,2,1])
জোনাথন অ্যালান


@ জোনাথন অ্যালান খুব ভাল পয়েন্ট, আপডেট হয়েছে।
নিল

এটিও গণনা শুরুর আগে একবার ঘুমায়। আমি মনে করি ঘুমের আগে আপনার মুদ্রণ বিবৃতি দরকার।
ম্যাজিক অক্টোপাস উরন

@ ম্যাজিক অ্যাক্টপাস ইউরন সম্মত, আপডেট হয়েছে।
নীল


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

জাভাস্ক্রিপ্ট (নোড.জেএস) , 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 বাইটে টুইট করা হয়েছে।

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

এটি অনলাইন চেষ্টা করুন!


1
1-rand(.5)কাজ করবে ?
জোনাথন অ্যালান

ভাল ধারণা. তারপর 1-rand.5খুব ব্যবহার করতে পারেন ।
স্টিভ

1
পেরেনগুলি সরিয়ে এবং কাউন্টারটিকে নেতিবাচক হিসাবে পরিবর্তন করে আরও চারটি বাইট কাটুন। এটি অনলাইন চেষ্টা করুন!
এক্সকালি

1

চিপ -wingjj , 33 বাইট

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

এটি অনলাইন চেষ্টা করুন!

চিপ, আমরা ঠিক জন্য অপেক্ষা করতে না পারে 1 / 100 এক সেকেন্ডের, কিন্তু আমরা জন্য অপেক্ষা করতে পারেন 1 / 256 তাই আমরা যে এখানে ব্যবহার এক সেকেন্ডের।

pযখন জিজ্ঞাসা করলেন, স্ট্যাক মাথা (এক বাইট) * জন্য মৃত্যুদন্ড সাময়িক ভাবে থেমে যাবে 1 / 256 সেকেন্ড। প্রতিটি চক্র, আমরা সবসময় স্ট্যাক (উচ্চ বিট সেট 128 / 256 ) এবং (সঙ্গে এলোমেলোভাবে অন্য সব স্ট্যাকের বিট সেট ?'গুলি)। এটি 0.50 এবং 1.00 সেকেন্ডের মধ্যে একটি এমনকি বিতরণ দেয়।

Args কিছু -wএবং -gjjউল্লেখ যে ইনপুট, পরিবর্তে stdin ব্যবহারের থেকে একটি কাউন্টডাউন হওয়া উচিত 0xFFকরতে 0x00(পরে মোড়কে)। আমরা এটি গণনা করার জন্য কম দুটি বিট সরবরাহ করতে ব্যবহার করি। অন্যান্য সমস্ত আউটপুট বিট স্থির থাকে (ASCII এর সাথে সম্পর্কিত মানে 0)।

অবশেষে, একবার শেষ হয়ে গেলে, আমরা tশেষ সংখ্যাটির পরে একটি বিরতি প্রতিরোধ করে প্রোগ্রামটি শেষ করি।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.