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

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

دو سری راهنمایی برای سوالات اضافه شده است.

تخمین زمان مطالعه


بر اساس آمار گزارش‌شده، میانگین سرعت مطالعه‌ی افراد در اینترنت بین ۲۰۰ تا ۲۵۰ واژه در هر دقیقه است. احتمالاً وبلاگ‌هایی را دیده‌اید که در آن‌ها زمان تقریبی مطالعه‌ی هر پست زیر عنوان آن نوشته شده است. از شما می‌خواهیم این قابلیت را پیاده‌سازی کنید.

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

تابعی با نام estimateReadingTime پیاده‌سازی کنید که یک رشته از کاربر دریافت کرده و زمان مطالعه‌ی پست را برحسب دقیقه برگرداند. این تابع باید تعداد کلمات موجود در متن را تقسیم بر ۲۰۰ کرده و سقف آن را برگرداند. هم‌چنین، کاراکترهای .، ?، !، ,، ; و : باید نادیده گرفته شوند. کلمات با یک یا چند کاراکتر ' '، '\t' یا '\n' از یکدیگر جدا شده‌اند. هم‌چنین، تفاوتی برای طول کلمات قائل نمی‌شویم.

امضای تابع estimateReadingTime به‌صورت زیر خواهد بود:

function estimateReadingTime(string $text): int
{
    // TODO: Implement
}
PHP

مثال🔗

<?php

function estimateReadingTime(string $text): int
{
    // TODO: Implement
}

function randomText(int $wordsCount): string
{
    $words = [];
    for ($i = 0; $i < $wordsCount; $i++) {
        $words[] = randomWord();
    }
    $text = implode(" ", $words);

    return $text;
}

function randomWord(): string
{  
    $vowels = ["a","e","i","o","u"];  
    $consonants = [
        "b", "c", "d", "f", "g", "h", "j", "k", "l", "m", 
        "n", "p", "r", "s", "t", "v", "w", "x", "y", "z"
    ];  
    $string = "";
    $max = intdiv(rand(4, 8), 2);
    for ($i = 1; $i <= $max; $i++) {
        $string .= $consonants[array_rand($consonants)];
        $string .= $vowels[array_rand($vowels)];
    }

    return $string;
}

echo estimateReadingTime(randomText(200)); // 1
echo "\n";
echo estimateReadingTime(randomText(201)); // 2
echo "\n";
echo estimateReadingTime(randomText(50)); // 1
echo "\n";
echo estimateReadingTime(randomText(1895)); // 10
PHP

خروجی موردانتظار:

1
2
1
10
Plain text

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

یک فایل PHP که تابع estimateReadingTime در آن پیاده‌سازی شده است آپلود کنید.

قسمت آموزشی🔗

در این قسمت راهنمایی‌های سوال، به مرور اضافه می‌شود. مشکلات‌تان در راستای حل سوال را می‌توانید از بخش "سوال بپرسید" مطرح کنید.

راهنمایی ۱

یک روش برای پیاده‌سازی تابع estimateReadingTime، حذف علائم نگارشی، جداسازی متن نهایی بر اساس whitespace و در نهایت شمارش تعداد کلمات است:

<?php

function estimateReadingTime(string $text): int
{
    $text = str_replace([".", "?", "!", ",", ";", ":"], "", $text);
    $text = trim($text);
    if (empty($text)) {
        return 0;
    }
    $wordsCount = count(preg_split("/\s+/", $text));

    // TODO: return ceil of $wordsCount divided by 200
}
PHP
راهنمایی ۲

روش دیگر برای پیاده‌سازی تابع estimateReadingTime، استفاده از تابع str_word_count برای محاسبه‌ی تعداد کلمات موجود در متن است:

<?php

function estimateReadingTime(string $text): int
{
    return ceil(str_word_count($text) / 200);
}
PHP
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.