থাম, আপনি যেখানে সেখানে দাঁড়িয়ে!


35

চ্যালেঞ্জ

একটি ফাংশন লিখুন যা একটি পরামিতি লাগে: একটি পূর্ণসংখ্যা t। পাইথন এবং বিবিসি বেসিকের tমতো আপনার ক্রিয়াকলাপটি চালিয়ে যাওয়ার আগে কয়েক সেকেন্ডের জন্য আপনার প্রোগ্রামটি থামাতে হবে ।time.sleep(t)WAIT t

নির্দিষ্ট সময়ের পরে কোডটি কার্যকর করার জন্য আপনাকে ওয়েটিং ফাংশন বা বিল্ট ইন কোনও বিল্ট ব্যবহার করতে হবে না এবং আপনার প্রোগ্রামটি tকয়েক সেকেন্ড পরে আবার শুরু হতে হবে ।

আপনার কার্যকারিতা পরীক্ষা করার জন্য, tআপনার নিজের মেশিনে প্রদত্ত চেয়ে 0.1 সেকেন্ডের কম সহনশীলতা রয়েছে : কম্পিউটারগুলির মধ্যে বৈকল্পিকগুলি ভাল।

আপনার উত্তর যে কেউ চ্যালেঞ্জ করা হলে, আপনি ফোটোগ্রাফিক (screenshotted) প্রমাণ আপনার ফাংশন জন্য সঠিকভাবে কাজ করে প্রদান করতে হবে t=1, t=5এবং t=25। আপনি নিজের কম্পিউটারের বিবরণও সরবরাহ করতে পারেন যাতে লোকেরা এটি তাদের নিজস্ব মেশিনে প্রতিলিপি করার চেষ্টা করতে পারে।

আপনার প্রোগ্রামটি এমন একটি কম্পিউটারে চালানো উচিত এবং হবে যার ঘড়ির গতি 1.6 গিগাহার্টজ বা তার বেশি।

জয়লাভ

সংক্ষিপ্ততম প্রোগ্রামটি জিতেছে।

খয়রাত

একটি অনুগ্রহ সবচেয়ে সংক্ষিপ্ততম প্রোগ্রামে চলে যাবে যা লুপ ব্যবহার না করে প্রোগ্রামটি থামিয়ে দেয় যে কত সময় কেটে গেছে checking আপনি যদি এই অনুগ্রহের জন্য দৌড়ের মধ্যে থাকেন তবে একটি পাদটীকা যুক্ত করুন যা আপনার উত্তর অনুগ্রহের জন্য।

লিডারবোর্ড

/* Configuration */

var QUESTION_ID = 55293; // Obtain this from the url
// It will be like http://XYZ.stackexchange.com/questions/QUESTION_ID/... on any question page
var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";
var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk";
var OVERRIDE_USER = 30525;

/* App */

var answers = [], answers_hash, answer_ids, answer_page = 1, more_answers = true, comment_page;

function answersUrl(index) {
  return "http://api.stackexchange.com/2.2/questions/" +  QUESTION_ID + "/answers?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + ANSWER_FILTER;
}

function commentUrl(index, answers) {
  return "http://api.stackexchange.com/2.2/answers/" + answers.join(';') + "/comments?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + COMMENT_FILTER;
}

function getAnswers() {
  jQuery.ajax({
    url: answersUrl(answer_page++),
    method: "get",
    dataType: "jsonp",
    crossDomain: true,
    success: function (data) {
      answers.push.apply(answers, data.items);
      answers_hash = [];
      answer_ids = [];
      data.items.forEach(function(a) {
        a.comments = [];
        var id = +a.share_link.match(/\d+/);
        answer_ids.push(id);
        answers_hash[id] = a;
      });
      if (!data.has_more) more_answers = false;
      comment_page = 1;
      getComments();
    }
  });
}

function getComments() {
  jQuery.ajax({
    url: commentUrl(comment_page++, answer_ids),
    method: "get",
    dataType: "jsonp",
    crossDomain: true,
    success: function (data) {
      data.items.forEach(function(c) {
        if (c.owner.user_id === OVERRIDE_USER)
          answers_hash[c.post_id].comments.push(c);
      });
      if (data.has_more) getComments();
      else if (more_answers) getAnswers();
      else process();
    }
  });  
}

getAnswers();

var SCORE_REG = /<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/;

var OVERRIDE_REG = /^Override\s*header:\s*/i;

function getAuthorName(a) {
  return a.owner.display_name;
}

function process() {
  var valid = [];
  
  answers.forEach(function(a) {
    var body = a.body;
    a.comments.forEach(function(c) {
      if(OVERRIDE_REG.test(c.body))
        body = '<h1>' + c.body.replace(OVERRIDE_REG, '') + '</h1>';
    });

    var patt = new RegExp(/[Bb]ounty/);
    var res = patt.test(body);
    var bountyyn = "no";

    if (res) {
      bountyyn = "yes";
    }
    
    var match = body.match(SCORE_REG);
    if (match)
      valid.push({
        user: getAuthorName(a),
        size: +match[2],
        language: match[1],
        link: a.share_link,
        bounty: bountyyn
      });
    
  });
  
  valid.sort(function (a, b) {
    var aB = a.size,
        bB = b.size;
    return aB - bB
  });

  var languages = {};
  var place = 1;
  var lastSize = null;
  var lastPlace = 1;
  valid.forEach(function (a) {
    if (a.size != lastSize)
      lastPlace = place;
    lastSize = a.size;
    ++place;
    
    var answer = jQuery("#answer-template").html();
    answer = answer.replace("{{PLACE}}", lastPlace + ".")
                   .replace("{{NAME}}", a.user)
                   .replace("{{LANGUAGE}}", a.language)
                   .replace("{{SIZE}}", a.size)
                   .replace("{{LINK}}", a.link)
                   .replace("{{BOUNTY}}", a.bounty);
    answer = jQuery(answer);
    jQuery("#answers").append(answer);

    var lang = a.language;
    if (/<a/.test(lang)) lang = jQuery(lang).text();
    
    languages[lang] = languages[lang] || {lang: a.language, user: a.user, size: a.size, link: a.link};
  });

  var langs = [];
  for (var lang in languages)
    if (languages.hasOwnProperty(lang))
      langs.push(languages[lang]);

  langs.sort(function (a, b) {
    if (a.lang > b.lang) return 1;
    if (a.lang < b.lang) return -1;
    return 0;
  });

  for (var i = 0; i < langs.length; ++i)
  {
    var language = jQuery("#language-template").html();
    var lang = langs[i];
    language = language.replace("{{LANGUAGE}}", lang.lang)
                       .replace("{{NAME}}", lang.user)
                       .replace("{{SIZE}}", lang.size)
                       .replace("{{LINK}}", lang.link);
    language = jQuery(language);
    jQuery("#languages").append(language);
  }

}
body { text-align: left !important}

#answer-list {
  padding: 10px;
  width: 400px;
  float: left;
}

#language-list {
  padding: 10px;
  width: 290px;
  float: left;
}

table thead {
  font-weight: bold;
}

table td {
  padding: 5px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b">
<div id="answer-list">
  <h2>Leaderboard</h2>
  <table class="answer-list">
    <thead>
      <tr><td></td><td>Author</td><td>Language</td><td>Size</td><td>Bounty?</td></tr>
    </thead>
    <tbody id="answers">

    </tbody>
  </table>
</div>
<div id="language-list">
  <h2>Winners by Language</h2>
  <table class="language-list">
    <thead>
      <tr><td>Language</td><td>User</td><td>Score</td></tr>
    </thead>
    <tbody id="languages">

    </tbody>
  </table>
</div>
<table style="display: none">
  <tbody id="answer-template">
    <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td>{{BOUNTY}}</td><td><a href="{{LINK}}">Link</a></td></tr>
  </tbody>
</table>
<table style="display: none">
  <tbody id="language-template">
    <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr>
  </tbody>
</table>


যদি আমাদের পছন্দসই প্রোগ্রামিংয়ের ভাষা ( কাশি কাশি ) কেবলমাত্র 1 সেকেন্ডের যথার্থতার জন্য সময় দেওয়ার পক্ষে সমর্থন করে?
ডুরকনব

@ ডুরকনব ওয়েল ইনপুটটি একটি পূর্ণসংখ্যা, তাই এটি ঠিক আছে
বিটা

3
@ ডুরকনব সম্ভবত আপনি আপনার প্রোগ্রামের বাইরে কার্যকরকরণের সময়টি পরিমাপ করতে পারেন, উদাহরণস্বরূপ ডিবাগ আউটপুট এবং ডিবাগভিউয়ের সময় স্ট্যাম্পগুলি দেখুন।
থমাস ওয়েলার

1
শিরোনাম এবং BBC BASICউদাহরণটি কী টিভি শো শার্লকের একটি রেফারেন্স বা আমি খুব বেশি পড়ছি?

1
কমপক্ষে এটি আপনাকে বুঝতে পেরেছিল যে আপনার শিরোনামটি
অক্ষম

উত্তর:


36

x86_64 মেশিন কোড, 10 বাইট

কোডের হেক্সডাম্প:

48 69 c9 ca fc 59 38 e2 fe c3

উত্স কোড ( ml64ভিজ্যুয়াল স্টুডিও দ্বারা একত্রিত করা যেতে পারে ):

    TITLE   heh

PUBLIC  mywait
_TEXT   SEGMENT
mywait  PROC
    imul rcx, 945421514
myloop:
    loop myloop
    ret
mywait  ENDP
_TEXT   ENDS
END

একটি নিখুঁত লুপটি সম্পাদন করে, নির্দিষ্ট মান থেকে শুরু করে 0 পর্যন্ত শুরু করে I

পরীক্ষা প্রোগ্রাম (প্রতিটি সময়সীমার জন্য 1, 5 এবং 25 সেকেন্ডের জন্য 10 বার অপেক্ষা করে):

#include <stdio.h>
#include <time.h>

extern "C" void mywait(int);

int main()
{
    int durations[] = {1, 5, 25};
    for (int duration: durations)
    {
        for (int i = 0; i < 10; ++i)
        {
            clock_t before = clock();
            mywait(duration);
            clock_t after = clock();
            printf("%f\n", (after - before) / (double)CLOCKS_PER_SEC);
        }
    }
    getchar(); // now take a screenshot
}

ফলাফল:

1.003000
1.000000
1.004000
1.006000
1.005000
0.998000
0.995000
1.000000
1.005000
1.004000
4.999000
5.003000
5.035000
5.010000
4.992000
5.003000
5.003000
5.019000
5.026000
4.989000
25.041000
24.993000
25.049000
24.988000
25.038000
24.948000
25.007000
25.014000
25.053000
25.021000

আমি এই উইন্ডোজ কম্পিউটারে এই প্রোগ্রামটি চালিয়েছি যার আর কিছু করার নেই। এটি যদি কিছু অ্যাপ্লিকেশন চালায় তবে অপেক্ষার সময়গুলি আরও অনড়।

সিপিইউর গতিবেগ ৩.৯ গিগাহার্টজ। দেখে মনে হচ্ছে এই কোডটি বর্তমান পিসি প্রযুক্তির জন্য সবেমাত্র যথেষ্ট ভাল - যদি ঘড়ির ফ্রিকোয়েন্সি প্রায় 8.8 গিগাহার্টজ হয় তবে গুণকটি একটি স্বাক্ষরিত 32-বিট ইন্টিতে ফিট করে না।


পিএস হিসাবে এই উত্তরটি কতটা সময় কেটে গেছে তা যাচাই করে না, এটি অনুগ্রহের প্রার্থী।


4
এটি দুর্দান্ত: ডি
বিটা ডিকায়

12
3900 গিগাহার্টজ? ওহ! হয়তো মেগাহার্টজ?
ওয়ে টুডুর

2
@ ওয়েও টুডোর ফিক্সড! এটি সম্পর্কিত কিছু মজাদার তথ্য যুক্ত করেছে।
অ্যানাটলিগ

1
উত্সটি 142 বাইট, সুতরাং এই উত্তরটি হিসাবে স্কোর করা উচিত।
পিটার টেলর

3
অ্যাসেম্বলি ভাষায় @ পিটারটেলর 142 বাইট ; মেশিন কোডে অনেক কম । এগুলি বিভিন্ন ভাষা; আমার মতে মেশিন কোডটি আরও মজাদার (তবে, [সীমাবদ্ধ-উত্স] চ্যালেঞ্জের ক্ষেত্রে সমাবেশ ভাষা আরও ভাল হবে)। মেশিন কোডের সমস্যাটি হ'ল এটি অ-এএসসিআইআই, এবং আমি মনে করি এটি কোনও বড় সমস্যা নয়। একটি সম্পর্কিত সমস্যা এখানে আলোচনা করা হয় ; আমি (বা আপনি) সেখানে মেশিন কোড নিয়ে আলোচনা শুরু করব?
অ্যানাটলিগ

21

বাশ, 29 25 24 23 19 বাইট

w()(ping -t$1 1.2)

নির্ভুলতা পরীক্ষা ( time) যেখানে $1= 1 সেকেন্ড:

real    0m1.012s
user    0m0.001s
sys     0m0.002s

23 থেকে 19 এ বাইট কাউন্ট করার জন্য ডেনিসকে ধন্যবাদ!

সম্পাদনা : pingলিনাক্স পিনিং 0.0.0.0 এড়াতে আমি আইপি পরিবর্তন করেছি যা লুপব্যাক ডিভাইস।


এটি কীভাবে কাজ করে

ping 1 সেকেন্ডের ডিফল্ট টাইমআউট রয়েছে, সুতরাং, অস্তিত্ব নেই এমন কোনও আইপি ঠিকানার সাথে যোগাযোগ করার সময়, পিংয়ের সময় শেষ না হওয়া অবধি চলতে পারে না, বা এটি আইপি থেকে কোনও উত্তর পেয়েছে।

-tএই নকল আইপি ঠিকানায় কয়েকবার pingচেষ্টা করতে বলে $1, পিংটি শেষ pingকরতে $1কয়েক সেকেন্ড সময় নিতে বাধ্য করে ।


এটি অনুগ্রহের যোগ্য! লুপ নেই!


গল্ফড: w()(ping -t$1 0.0)(আমাদের অবশ্যই আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা থাইল্যান্ড রয়েছে ping; আমার -w$1লোকালহোস্টের কাছ থেকে উত্তর প্রয়োজন এবং তা পেতে পারে))
ডেনিস ২

ঠিক আছে, তারপরে এটি অবশ্যই ওএস এক্স-এ নয়/dev/lo
জর্জিউনিক্স ২

লিনাক্সে 0.0 থেকে 1.2 পরিবর্তন করুন
জর্জিউনিক্স

ওএস এক্স-তে, w 10আমি 10.02 sec realব্যবহার করছি time
জর্জেউনিক্স

w()(ping -w$1 1.2)একটি যাদুমন্ত্র মত কাজ করে.
ডেনিস

18

মতলব, 33 বাইট

function f(t)
tic;while toc<t,end

অথবা আপনি এটি অক্টোটাতেও ব্যবহার করতে পারেন: এটি অনলাইনে চেষ্টা করে দেখুন

মতলব, 31 বাইট

হিসাবে @flawr দ্বারা প্রস্তাবিত , এটি একটি বেনামী ফাংশন (এটা যাতে এটা ব্যবহার করার জন্য একটি নাম নিয়োগ করা উচিত) সঙ্গে সম্পন্ন করা যেতে পারে:

@(t)eval('tic;while toc<t,end')

উদাহরণ:

>> f=@(t)eval('tic;while toc<t,end');
>> tic, f(2), toc
Elapsed time is 2.000323 seconds.

5
টিক ... টোক ... টিক ... টোক
ক্যারিডর্ক

4
যদি কোনও আনইসাইন করা ফাংশন হ্যান্ডেলটিও ঠিক থাকে তবে আপনিও ব্যবহার করতে পারেন@(t)eval('tic;while toc<t,end')
flawr

@ ফ্লোয়ার বাহ! evalবেনামে ফাংশনটিতে কয়েকটি বিবৃতি প্যাক করতে খুব সুন্দর কৌশল । ধন্যবাদ!
লুইস মেন্ডো

হ্যাঁ, এটি কখনও কখনও একটি কার্যকর ট্রিক, তবে আপনি এখনও মানগুলির সাথে ভেরিয়েবলগুলিতে স্বাক্ষর করতে পারবেন না। আমি এখনও পুনরাবৃত্ত ফাংশনগুলির জন্য ফাংশন হ্যান্ডলগুলি অপব্যবহারের পথে কাজ করছি =) পিএস: আপনাকে অগত্যা ফাংশন হ্যান্ডেলটির কোনও নাম নির্ধারণ করতে হবে না, কখনও কখনও আপনি অন্য কোনও ফাংশনের যুক্তি হিসাবে সরাসরি হ্যান্ডেলটিও পাস করতে পারেন, যেমন bsxfun
flawr

+1, তবে বেনামে ফাংশন সংস্করণটি অক্টোবায় (v 3.8.1) কাজ করে না। এটি teval এর ভিতরে ভেরিয়েবল সনাক্ত করতে ব্যর্থ ।
pawel.boczarski

11

জাভা, 63 62 বাইট

t->{for(long a=System.nanoTime();System.nanoTime()-a<t*1E9;);}

অবাক করার মতো কিছু নয় - কেবল 1/1/1970 থেকে একাধিকবার ন্যানোসেকেন্ডের সংখ্যা ধরে এবং দ্বিতীয়টি পাস হয়েছে কিনা তা পরীক্ষা করে দেখুন।

Ypnypn এবং aditsu ধন্যবাদ 1 বাইট সংরক্ষণ করা।


25
হ্যাঁ! 100 বাইটের নীচে একটি জাভা প্রোগ্রাম; ডি
বিটা ডেকে

5
@ বেটাডেকে বাদে এটি আসলে কোনও প্রোগ্রাম নয়।
ব্যবহারকারী 253751

1
কেউ কি উল্লেখ করেনি যে আপনি এটির জন্য সংক্ষিপ্ত করতে পারেন? for(long a=System.nanoTime();System.nanoTime()-a<t*1E9;);
অদিতসু

কি দিয়ে t->?
আলোকিত

1
@Luminous এটা একটা ব্যাপার ল্যামডা অভিব্যক্তি , সাধারণভাবে জাভা 8. ব্যবহৃত
টিঅ্যান্ডটি

8

ব্যাচ, 27 বাইট

set /a c=%1+1
ping -n %c% 0

একটি জনপ্রিয় ব্যাচের কৌশল, যেহেতু ব্যাচের ঘুমের কার্যকারিতা ছিল না।

কোনও লুপ নেই, তাই অনুগ্রহযোগ্য


গল্ফ: set/ac=%1+12 বাইট সঞ্চয়
স্টিভেফেসেল

7

কমোডোর 64 বেসিক, 19 16 বাইট

1000 FORI=1TO930*N:NEXT:RETURN

একটি কল দিয়ে N=<number-of-secods>:GOSUB1000

তবে আমি পর্যাপ্ত নির্ভুলতা সরবরাহ করতে পারি না। যেহেতু সি 64 এর প্রায় 1 মেগাহার্টজ সিপিইউ গতি ছিল, আমি মনে করি এটি খালি FOR- NEXTলুপ 1000 বার করা যথেষ্ট ছিল যাতে এটি প্রায় 1 সেকেন্ড ছিল।

আসলে মেশিনের দুটি প্রধান সংস্করণ ছিল: পাল 0.985 মেগাহার্টজ এবং এনটিএসসি 1.023 মেগাহার্টজ ( সি 64 উইকিপিডিয়া পৃষ্ঠা থেকে সমস্ত ডেটা )। আমার যেমন এনটিএসসি সংস্করণ ছিল তাই প্রায় 930 বার লুপ চালানো দরকার ছিল।

নিম্নলিখিত প্রোগ্রামের সাথে পরীক্ষাগুলি ( Nসেকেন্ড, ব্যবহারকারীরা এতে সরবরাহ করেছেন INPUT):

10 INPUT N
20 PRINT TI$
30 GOSUB 1000
40 PRINT TI$
50 END
1000 FOR I=1 TO 930*N:NEXT I:RETURN

সর্বশেষ পুনরায় সেট করা (1 সেকেন্ডের নির্ভুলতা, তবে সিপিইউ গতির উপর নির্ভর করে) সময় সহ TI$স্ট্রিং ( hhmmssফর্ম্যাট) সমেত একটি সিস্টেম ভেরিয়েবল যেখানে রয়েছে ( তাই এটি একই প্রবণতা নয়, কারণ এটি একই ঘড়ি) quite

এখানে চিত্র বর্ণনা লিখুন

অনলাইন সি 64 এমুলেটর দিয়ে স্ক্রিনশট তৈরি হয়েছে http://codeazur.com.br/stuff/fc64_final/

কোড (38908 বাইট) এবং ( 38893 38889 বাইট) পরে টাইপ করার আগে উভয়ের সাথে পরীক্ষিত হিসাবে এই প্রোগ্রামটি ( 1000কেবলমাত্র লাইন ) 16 19 বাইট মেমোরিতে দখল করে । বেসিক প্রোগ্রামের জন্য ফ্রি মেমরি ফিরিয়ে দেয় (এটি একটি নেতিবাচক মান এবং ধ্রুবক যুক্ত করা উচিত, তবে বাস্তবে এটি কোনও ব্যাপার নয়)।PRINT FRE(0)+65535PRINT FRE(0)65535

যেহেতু এই প্রোগ্রামটি কোনও লুপের মধ্যে সময় কাটায় তা পরীক্ষা করে না, এটি অনুগ্রহের যোগ্যতা অর্জন করে।


আমার মনে আছে আমি TI$ভেরিয়েবল কীভাবে সঠিক তা পরীক্ষা করেছিলাম এবং এটি প্রতি সিএ প্রায় 1 সেকেন্ড ছিল রেফারেন্স ঘড়ির সাথে 2 ঘন্টার পার্থক্য (C64 এর বাইরে), তাই যথার্থতা যথেষ্ট। আমি যে বিষয়ে অনিশ্চিত তা হ'ল মানটি 950তবে এটির অন্য কোনও মান <1000 (যা আমি নিশ্চিত), এটি এখনও সমান পরিমাণ বাইট
ভয়েটকাস

আমি Jভেরিয়েবলটি একরকম রিয়েল কোডের একটি অংশ হওয়া উচিত, টেস্টিং প্রোগ্রামের অংশ নয় - সুতরাং এটি কেবলমাত্র 1 সেকেন্ড নয়, এন সেকেন্ডের জন্য অপেক্ষা করবে। যদিও বেসিকের সিনট্যাক্সে এটি সংহত করতে হয় তা আমি জানি না।
অ্যানাটলিগ

@ অ্যানাটলিগ এইচএম, আপনি ঠিক বলেছেন, এটি 1000 FOR I=1 TO N:FOR I=1 TO 950:NEXT I:NEXTJ:RETURNযেমন কলের মতো কিছু হওয়া উচিত । 200 N=5:GOSUB 1000। এছাড়াও আমি লক্ষ্য করেছি যে ওপিতে একটি ফাংশন প্রয়োজন । আমি এটি ঠিক করার চেষ্টা করব
ভয়েটকাস

@নাটোলিগ আমি সংশোধন করেছি, এটি ব্যবহার করেছে GOSUB- RETURNবিবৃতি, কারণ বেসিকের কোনও কার্যকারিতা নেই
ভোইকটাস

@ ভিটকাস DEF FNবিবিসি বেসিকের মতোও নয় ?
বিটা ক্ষয়

7

জাভাস্ক্রিপ্ট ES6, 50 45 40 বাইট

n=>{for(g=Date.now,z=g();z+n*1e3>g(););}

এটি স্ব-কার্যকরকারী কার্যাদি ব্যবহার করে, কেন +new Dateকাজ করছে না তা নিশ্চিত নয়।


ব্যবহার

আমি সাফারি নাইটলি দিয়ে এটি পরীক্ষা করেছি তবে এটি ফায়ারফক্সেও কাজ করবে। এর সাথে পরীক্ষিত:

(
  n=>{for(g=Date.now,z=g();z+n*1e3>g(););}
)(1); // 1 is the delay is seconds
console.log( 'foo' );

আপনি এটি বন্ধুত্বের সাথে ঘিরে রেখে চালাতে পারেন:

( n=>{for(g=Date.now,z=g();z+n*1e3>g(););} )(5)

অথবা নাম দিয়ে:

const wait=n=>{for(g=Date.now,z=g();z+n*1e3>g(););}
wait(5)

ব্যাখ্যা

প্রোগ্রামটির পিছনে মূল যুক্তি এখানে রয়েছে:

function (n) {
    var start = Date.now();   // Save start time (ms)
    while (                   // while is synchronous, it'll block the code execution until it has finished
           start + (n * 1000) // This is the end time (start + delay)
            > Date.now()      // When the current time is 1 ms past the target end time, stop. resuming the code execution
          );
}

আমি যে সংস্করণটি ব্যবহার করছি তা একই যুক্তি ব্যবহার করে:

n=>{ // Function with argument n, { is required if the functions is not just an expression
   for(           // For will also block code execution
                  // This first part is used to define variables
      g=Date.now, // Add an alias for Date.now as "g"
      z=g()       // get current time and store in z
      ;           // Next part, condition
      z + n*1e3   // Target end time, ( start + delay (converted to seconds) ) 1e3 is 1000 but in big e notation
      ;           // Is required for a valid for loop
   );
}

6

সিজেম, 15

{e3es+{_es>}g;}

এটি এমন একটি ব্লক যা কার্যকর করা যায় বা ভেরিয়েবলের মধ্যে সংরক্ষণ করা যেতে পারে (এইভাবে নামকরণ করা ফাংশন হয়ে উঠবে)। ডেনিস এবং মিস্টার sensকমত্য একমত যে কেবলমাত্র ব্লক গণনা গ্রহণযোগ্য)

ব্যাখ্যা:

e3       multiply the argument by 1000 (to get milliseconds)
es       get the current timestamp in milliseconds
+        add the values, obtaining the stopping time
{…}g     do…while
  _      duplicate the stopping time
  es>    check if we reached that time yet (loop condition)
;        discard the stopping time

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


1
মেটা সম্পর্কিত sensক্যমত্য হ'ল ফাংশনগুলির নামকরণ করার দরকার নেই, তাই আমি যুক্তি দিয়ে বলছি যে স্ট্যাকের উপরের একটি ব্লক একটি ল্যাম্বদার মতো ব্যবহারযোগ্য able
ডেনিস

6

জাভাস্ক্রিপ্ট, 68 54 51 42

আমার মনে হয় কোনও স্ক্রিনশটের দরকার নেই। তবে আমি সন্দেহ করি আপনি আরও গল্ফ করতে পারেন ...

নতুন সংস্করণ: আমি এখন অবশেষে এড়াতে newএবং Dateদুবার ব্যবহার করতে সক্ষম হয়েছি :

f=t=>{for(x=(d=Date.now)();d()<x+t*1e3;);}

পুরানো সংস্করণ:

f=t=>{for(x=new Date();(new Date()|0)<x|0+t*1e3;);}

f=t=>{x=(new Date())|0;while((new Date()|0)<x+t*1e3);}

f=t=>{x=new Date().getSeconds();while(new Date().getSeconds()<x+t);}

1
এখনই কোনও স্ক্রিনশটের প্রয়োজন নেই :) কেবলমাত্র যদি কেউ এই প্রোগ্রামটিকে চ্যালেঞ্জ করে
বিটা ডিকায়

5

পিএইচপি, 171 177 84 79 65 64 62 বাইট

<?php function a($i){for($f=microtime,$e=$f(1)+$i;$f(1)<$e;);}


ব্যবহার:
ফাংশনটিকে এভাবে কল করুন:
php -d error_reporting=0 -r "require 'script.php'; a(5);echo 'Hello, World!';"
প্রোগ্রামটির "হ্যালো, ওয়ার্ল্ড!" প্রতিধ্বনি দেওয়ার আগে সেকেন্ডে 5 সময় অপেক্ষা করা উচিত।


ব্যাখ্যা:
প্রথমে ফাংশনটি মিলি সেকেন্ডে বর্তমান সময় পায়। তারপরে বর্তমান সময়টি ছোট হওয়া পর্যন্ত প্রথম সময় ইনপুট না দেওয়া পর্যন্ত ফাংশনটি একটি লুপ করে। তারপরে "হ্যালো ওয়ার্ল্ড!" প্রতিধ্বনিত হয়।

লগ:
ভিকটাস সেভড
2 বাইট অ্যাক্সিয়াকের জন্য 113 বাইট সংরক্ষিত


1
এটি হ'ল ম্যানুয়াল , $get_as_floatপ্যারামিটার দেখুন। এছাড়াও সরান $t, $s- আপনার
সেগুলির

1
1e6 = 1000000 এক মিলিয়ন। echo 1e6;কাজ করে। তবে হ্যাঁ - ভাসমান হিসাবে পাওয়া সেকেন্ডের সংখ্যা, তাই $e=microtime(1)+$i;যথেষ্ট হবে
ভয়েটকাস

2
একটি কাজ বেহালার তোমার জন্য
Voitcus

1
@ ভুইটাস আপনার সাহায্যের জন্য ধন্যবাদ!
জেরেঙ্ক

1
আপনি আরও 2 টি বাইট সংরক্ষণ করতে পারেন (পিএইচপি 7 তে 3 বাইট): 3v4l.org/fU11Y
axiac

5

জুলিয়া, 33 20 বাইট

t->watch_file(".",t)

এর ফাংশন স্বাক্ষরের পরিবর্তনের কারণে কেবল জুলিয়া v0.4 এ কাজ করে watch_file। একক প্যারামিটার সহ একটি বেনামী ফাংশন সংজ্ঞা দেয় tযা (আব) watch_fileফাংশনে টাইমআউট প্যারামিটার ব্যবহার করে ।

এই অনুগ্রহের প্রার্থী!

জুলিয়া আরপিএল ব্যবহার করে বিক্ষোভ:

julia> f=t->watch_file(".",t)
(anonymous function)

julia> @elapsed f(1)
1.002134983

julia> @elapsed f(5)
5.006161965

julia> @elapsed f(25)
25.026096192

পূর্ববর্তী উত্তর (৩৩ বাইট), জুলিয়া স্থিতিশীল অবস্থায়ও কাজ করছে

t->(b=time();while b+t>time()end)

4

আর, 48 বাইট

f=function(t){a={g=Sys.time}();while(g()<a+t){}}

প্রদর্শন:

t0 <- Sys.time();f(1); Sys.time() - t0 
## Time difference of 1.000272 secs

t0 <- Sys.time();f(5); Sys.time() - t0 
## Time difference of 5.011189 secs

t0 <- Sys.time();f(25); Sys.time() - t0 
## Time difference of 25.00848 secs

1
আমি মনে করি না যে আপনি f=বাইট গণনা অন্তর্ভুক্ত করা প্রয়োজন , ফাংশন স্নিপেটস ভাল আছে।
সলোমন উকো

4

পিএইচপি, 39 বাইট

function a($a){while($i++<.4583e8*$a);}

(নোট যে আমি আসলে এই খাটো পেতে পারেন যদি পুরো প্রোগ্রাম আর্গুমেন্ট সুবিধা গ্রহণ করে প্রয়োজন বোধ করা হয় কমান্ড লাইন দিয়ে চলে গেল। নিচে 35 )

<?php while($i++<.4583e8*$argv[1]);

প্রোগ্রাম পরীক্ষার জন্য ব্যবহৃত:

<?php function a($a){while($i++<.4583e8*$a);}

record(1);
record(5);
record(25);

function record($t)
{
    $time = microtime_float();
    a($t);
    echo microtime_float() - $time."\n";
}

function microtime_float()
{
    list($usec, $sec) = explode(" ", microtime());
    return ((float)$usec + (float)$sec);
}

ফলাফল:

JamesWebster:Documents jameswebster$ php A.php
1.0093479156494
4.9945771694183
24.971961975098

এখানে চিত্র বর্ণনা লিখুন


যদিও আমি অনুগ্রহের যোগ্যতা অর্জন করি, তবে অন্য কয়েকটি এন্ট্রি নিয়ে আমি খুব কমই দৌড়াচ্ছি!


হ্যাঁ, আপনার বাইট গণনাটি ভাল
বিটা ডেকে

4

উইন্ডোজ সিএমডি, 22 বাইট

ping -w 1000 -n %1 1.1

এটি কোনও লুপ (লেবেল এবং গোটো) ব্যবহার করে না তাই এটি অনুগ্রহের জন্য যোগ্যতা অর্জন করে

এটি t1.0.0.1 এ অবৈধ পাঠায় (অবৈধ) এবং 1000 এমএসের জন্য প্রতিক্রিয়াটির জন্য অপেক্ষা করে


3

জাভাস্ক্রিপ্ট ES6, 40 বাইট

t=>{for(t=(d=Date.now)()+t*1e3;d()<t;);}

নিম্নলিখিত সঙ্গে পরীক্ষিত:

elapsed=(f,t,b=(d=Date.now)())=>(f(t),console.log(d()-b+"ms elapsed")) // accepts func, delay
STOP=t=>{for(t=(d=Date.now)()+t*1e3;d()<t;);}
elapsed(STOP,1)  // prints 1000ms elapsed
elapsed(STOP,5)  // prints 5000ms elapsed
elapsed(STOP,25) // prints 25000ms elapsed

আপনি কি ব্যাখ্যা করতে elapsed(STOP, t)পারেন? স্টপ এবং প্রবাহিত কী কী?
বিটা ক্ষয়

elapsedএই ক্ষেত্রে চালানোর জন্য প্রথম আর্গুমেন্ট গ্রহণের সময়টি পরিমাপ করে STOP, যা পরিবর্তে প্রথম কোড স্নিপেট। বিচ্ছিন্ন হওয়া দ্বিতীয় আর্গটি আর্গটি পাস করা হয়েছে STOP
ডেন্ড্রোবিয়াম

3

টিআই-বেসিক (84 + এসই), 21 বাইট

ইনপুট পদ্ধতি: T:prgmT। এটি টিআই-বেসিকের কোনও ক্রমের নিকটতম সমতুল্য। কার্যক্রম:

For(A,1,841Ans
End

সমস্ত নির্ভুলতা ট্রায়াল-এবং-ত্রুটির মাধ্যমে অর্জিত হয়; স্টপওয়াচের সাথে এটির সময় নির্ধারণ করা প্রদত্ত পরীক্ষার সমস্ত ক্ষেত্রে সেকেন্ডের বিশের মধ্যে কাজ করে।

যন্ত্রের তথ্য:

RAM FREE   23312
ARC FREE  889802


 TI-84 Plus Silver Edition
          2.55MP
PROD #: 0A-3-02-37
ID: 0A3DC-C3469-FFE8

W00T একটি অনুগ্রহের যোগ্য!


1
আপনি কি জানেন: আপনার ক্যালকুলেটরের For(লুপগুলির গতি নির্ভর করে কতটি অক্ষরের ভেরিয়েবল বিদ্যমান? আরও ভেরিয়েবল ভ্যাট আপ বন্ধ করে দেয় এবং আপনার সময় 20% বা আরও বেশি সময় নিতে পারে। সিস্টেমের ভেরিয়েবলগুলি (যেমন এন , Xmin) ইমিউন।
lirtosiast

@ থমাসকওয়া হু! মজাদার. আমার কাছে ফাইল স্থানান্তর করার সময় পেলে আমি একটি পরিষ্কার ক্যালকুলেটর দিয়ে পুনরুদ্ধার করব।
কনর ও'ব্রায়েন

2

পাইথন, 57 বাইট

import time
b=time.time
def y(i):
 x=b()
 while x+i>b():x

কল ফাংশন y()


2

PureBasic, 92 বাইট

Procedure z(t)
t=t*1e3+ElapsedMilliseconds()
While t>ElapsedMilliseconds():Wend
EndProcedure

এটি আমি সবচেয়ে কম চিন্তা করতে পারি। আমি সন্দেহ করি এটি এখানে দীর্ঘতম হবে ...

পরীক্ষা করার জন্য:

OpenConsole()
i=Val(Input())
s=ElapsedMilliseconds()
z(i)
PrintN(Str(ElapsedMilliseconds()-s))
Input()

2

পাওয়ারশেল, 75 বাইট

দীর্ঘ, বর্ণনামূলক পদ্ধতি কল একটি ভাষায় স্পষ্টতার জন্য হ্যাঁ :)

function w{param($i);$n=(Get-Date).AddSeconds($i);while($n-gt(Get-Date)){}}

একটি প্রোগ্রামের মধ্যে যেমন কিছু সঙ্গে কল করা হয়

Get-Date
w(15)
Get-Date

বিকল্পভাবে, যদি আমাদের পরিবর্তে বাহ্যিক প্রোগ্রামগুলি কল করার অনুমতি দেওয়া হয় তবে আমরা নীচে 59 বাইটে নামতে পারি :

$n=(Get-Date).AddSeconds($args[0]);while($n-lt(Get-Date)){}

এটি নিম্নলিখিত হিসাবে একটি প্রোগ্রামের মধ্যে কল করা হবে (উপরোক্ত "অপেক্ষা-ফাংশন.পিএস 1" হিসাবে সংরক্ষণ এবং একই ফোল্ডারে সংরক্ষণ করা অনুমান করে):

Get-Date
& ((Split-Path $MyInvocation.InvocationName) + "\wait-function.ps1 15")
Get-Date

ফাংশন / প্রোগ্রামটি লেখার ক্ষেত্রে আমরা যা সঞ্চয় করি তা আসলে এটি সম্পাদন করার জন্য অতিরিক্ত প্রয়োজনের চেয়ে বেশি জমে থাকে। দীর্ঘশ্বাস।


2

পাইথন, 66 বাইট

দ্রষ্টব্য, আমার বাস্তবায়ন কোনও ইনবিল্ট সময় ফাংশনকে কল করে না, বা শিডিয়ুলিং বৈশিষ্ট্যটি ব্যবহার করে।

def S(t):
 try:__import__("Queue").Queue().get(1,t)
 except:pass

এবং হ্যাঁ, এটি অনুগ্রহের যোগ্য।


না, এটি অবৈধ: আপনি নির্দিষ্ট সময়ের পরে কোড নির্বাহের জন্য
বিটা ডেসে

@ বেটাডে: আমার উপলব্ধি অনুসারে, কুইও () পাওয়া "" একটি নির্দিষ্ট সময়ের পরে কোড সম্পাদন করার জন্য কার্যনির্মিত "নয়। কেন এটি এক হিসাবে যোগ্য হবে তা দয়া করে ব্যাখ্যা করুন।
অভিজিৎ

অন্যান্য অনেক উত্তরের কোড রয়েছে যা অন্যান্য জিনিসের জন্য টাইমআউট ব্যবহার করে, তাই এটিও ঠিক হওয়া উচিত।
সলোমন উকো

2

Hassium , 55 বাইট

func w(t){p=time().second;while((p+t)>time().second)0;}

চালান এবং প্রসারিত দেখুন: http://HassiumLang.com/Hassium/index.php?code=9f4e2bdb292b14b150fba63677a11a79


শুধু পরীক্ষা করে দেখুন, এই ভাষাটি কখন তৈরি হয়েছিল?
বিটা ক্ষয়


2

পাইথ, 19 বাইট

দেরীতে প্রবেশ কিন্তু .d0শেষ রাতে ডক্সে সন্ধানের পরে আমি এটিকে একবারে যাওয়ার সিদ্ধান্ত নিয়েছি।

DCNK.d0W<-.d0KNJ1))

একটি ফাংশন সংজ্ঞায়িত করে যা লুপ হয়ে যাওয়া সময় Nসেকেন্ড না হওয়া পর্যন্ত লুপ করে ।

এখানে চেষ্টা করুন


খুশী হলাম। আমি পেয়েছি DCNJ+.dZN#Ig.dZJB)), এটিও 19 বাইট।
hakr14

2

RProgN 2 , 13 বাইট

°°°)*™+]³]™>:

ব্যাখ্যা

°°°)*™+]³]™>:
°°°             # Push 3 tens to the stack.
   )*           # Get the product of the entire stack, including the implicit input. This is the shortest way to multiply the input by 1000.
     ™+         # Add it to the current time in miliseconds.
       ]        # Duplicate it to use as a (throwaway) conditional.
        ³   :   # Create a function using the next 3 concepts, and while the top of the stack is truthy, execute it.
         ]      # Duplicate the target time
          ™>    # Is it larger than the current time?

অনুগ্রহ করে নির্দিষ্টভাবে "কত সময় কেটে গেছে তার কোনও লুপ ব্যবহার না করে" বলে , যা এটি করে না। এটি একটি লক্ষ্য সময় নির্ধারণ করে এবং তা লক্ষ্য সময়টি পাস করেছে কিনা তা পরীক্ষা করে চালিয়ে যায়, সুতরাং এটি অনুগ্রহের যোগ্য eligible

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


1

Tcl , 53 বাইট

proc W t {while "\[clock mil]-[clock mil]<$t*1e3" {}}

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

ব্যাখ্যা

কমান্ড clock millisecondsহ্রাস করা যেতে পারে clock mil, পালানো 1 ম বন্ধনী সহ, প্রতিটি লুপে এটি ব্যাখ্যা করা হবে এবং ডাব্লু / ও মাত্র একবার। এটি মিলি সেকেন্ড পরিমাপ করার সাথে সাথে আমাদের 1000 বা 1e3 দ্বারা গুণিত করতে হবে যা 1 বাইট সংরক্ষণ করে।


1

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক ) + / ইউ: সিস্টেম.ট্রেডিং, 36 বাইট

x=>new SemaphoreSlim(0).Wait(x*1000)

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

কোনও ক্ষমতা ছাড়াই একটি সেমফোর তৈরি করে এবং নির্দিষ্ট সেকেন্ডের জন্য এটি পাওয়ার চেষ্টা করে।

আমি বুঝতে পারি যে আমি এখানে কোনও কিছুর "অপেক্ষা" করছি। আমার কাছে এটি পিং / সময়সীমা সমাধানের বিপরীতে আরও বেশি মনে হয়Thread.Sleep । কোডটি এমন কোনও সংস্থান পাওয়ার চেষ্টা করে যা এটি পেতে পারে না এবং সীমাবদ্ধতার পরে চেষ্টা করা বন্ধ করে দেয়।

===

নীচে একটি প্রকরণ যা Taskঅসীম লুপ দিয়ে শুরু করে , তারপরে এটি একটি সময়সীমা সম্পন্ন হওয়ার জন্য অপেক্ষা করে। সমস্ত প্রয়োজনীয় নেমস্পেসগুলি ডিফল্টরূপে অন্তর্ভুক্ত করা হয় তবে সমাধানটি উপরেরটির চেয়ে কয়েক বাইট দীর্ঘ longer

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 40 বাইট

x=>Task.Run(()=>{for(;;);}).Wait(x*1000)

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


0

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

žcžb60*+[Džcžb60*+αIQ#

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

দ্রষ্টব্য: বর্তমান দ্বিতীয়টিতে কতটি মাইক্রোসেকেন্ড ইতিমধ্যে পেরিয়ে গেছে তার উপর নির্ভর করে সহনশীলতা 0.1 সেকেন্ডের চেয়ে কিছুটা বড় হতে পারে। তবে যেহেতু প্রায় অর্ধেক উত্তরগুলিতে একই রকম সমস্যা রয়েছে, তাই আমি অনুভব করেছি যে এটি অনুমোদিত।

ব্যাখ্যা:

05AB1E এর বর্তমান সময়ের জন্য কোনও বিল্টইন নেই। তবে এতে বর্তমান বছরের / মাস / দিন / ঘন্টা / মিনিট / সেকেন্ড / মাইক্রোসেকেন্ডগুলির আলাদা আলাদা বিল্টিন হিসাবে অন্তর্নির্মিত রয়েছে। যেহেতু কেবলমাত্র সেকেন্ড ব্যবহার করে প্রায় 59 থেকে 0 টি সমস্যার কারণ হয়ে উঠতে পারে, তাই আমার পক্ষে মিনিট কয়েক সেকেন্ডের প্রয়োজন, দুর্ভাগ্যক্রমে নন-কোডগল্ফিং ভাষাগুলির বেশিরভাগ উত্তরের চেয়ে কোডটি আরও দীর্ঘতর করুন।

žc                # Push the current seconds
  žb              # Push the current minutes
    60*           # Multiply it by 60
       +          # Add them together
[                 # Start an infinite loop:
 D                #  Duplicate the initial (minutes*60 + seconds) from before the loop
  žcžb60*+        #  Push the current (minutes*60 + seconds) again
          α       #  And take the absolute difference between the two
           IQ     #  And if this is equal to the input:
             #    #   Stop the infinite loop

0

স্মাইলব্যাসিক, 20 বাইট

INPUT T
DIALOG"",,,T

একটি ডায়ালগ বাক্স খোলে যা Tসেকেন্ড পরে স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যায় । আমি নিশ্চিত নই যে এটি "ওয়েটিং ফাংশন বিল্ট ইন" হিসাবে গণ্য হয়েছে তবে আমি মনে করি এটি ব্যবহারের মতোই বৈধ isping

একটি বিকল্প 37 বাইট প্রোগ্রাম যা অবশ্যই প্রতারণা করছে না:

INPUT T
FADE.,T*60WHILE FADECHK()WEND

স্ক্রিনের বিবর্ণ রঙকে 0 এ পরিবর্তিত করার কারণ হয় (আলফা = 0, লাল = 0, সবুজ = 0, নীল = 0) (কোনও প্রভাব নেই) ধীরে ধীরে কয়েক Tসেকেন্ড পরে, তারপরে সেই অ্যানিমেশনটি শেষ হওয়ার জন্য অপেক্ষা করে।

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