لینک‌های مفید برای شرکت در مسابقه:

در طول مسابقه می‌توانید سؤالات خود را از قسمت «سؤال بپرسید» مطرح کنید.

بشمار


آمیرزا با ۸۰ سال سن به برنامه‌نویسی علاقه‌مند شده است. او شنیده است که یکی از زبان‌های موردعلاقه‌ی جوانان جاوااسکریپت است، اما او از عالم کامپیوتر یک کامپیوتری دارد که با زغال کار می‌کند! این کامپیوتر حتی عملیات‌های ساده‌ی ریاضی همچون 2+22+2 را به کندی انجام می‌دهد. وی که از این امر عاصی شده است، از شما می‌خواهد برای او کاری کنید که بتواند ببیند هر تابع چه زمانی برحسب میلی‌ثانیه طول می کشد تا اجرا شود.

جزئیات پروژه🔗

در این سؤال باید تابعی با نام timeit طراحی شود که به‌صورت زیر عمل کند: ‍‍‍

const fn = (a, b) => a + b;
timeit(fn)(5, 10).then(ans => {
    ans === {value: 15, time: 500} // true
})
JavaScript

در مثال بالا، میزان زمان ذکرشده براساس پرفورمنس سیستم آمیرزا است و روی کامپیوتر شما بسیار سریع‌تر خواهد بود (زمان تقریباً برابر با ۰٫۱ میلی‌ثانیه خواهد بود).

جالب است بدانید آمیرزا علاوه بر توابع معمولی از توابعی با رفتار async نیز استفاده می‌کند؛ پس انتظار می‌رود تابع شما برای این دسته از توابع نیز به خوبی کار کند. مثال: ‍‍‍‍‍

function fn(t) {
    return new Promise((res, rej) => {
        setTimeout(() => res(`done after ${t}ms`), t);
    });
}

timeit(fn)(25).then(ans => {
    ans === {value: "done after 25ms", time: 25}
})
JavaScript

نکته: از آن‌جایی که زمان اجرایی توابع وابستگی به کلاک کاری پردازنده دارند، ممکن است میزان زمان محاسبه‌شده دارای مقداری خطا باشد. این میزان خطا در روند داوری لحاظ شده است.

آن‌چه باید آپلود کنید🔗

فایل main.js که تابع timeit در آن پیاده‌سازی شده است را به صورت ZIP شده ارسال نمایید.

ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.