بر اساس آمار گزارششده، میانگین سرعت مطالعهی افراد در اینترنت بین ۲۰۰ تا ۲۵۰ واژه در هر دقیقه است. احتمالاً وبلاگهایی را دیدهاید که در آنها زمان تقریبی مطالعهی هر پست زیر عنوان آن نوشته شده است. از شما میخواهیم این قابلیت را پیادهسازی کنید.
# جزئیات پروژه
تابعی با نام `estimateReadingTime` پیادهسازی کنید که یک رشته از کاربر دریافت کرده و زمان مطالعهی پست را برحسب دقیقه برگرداند. این تابع باید تعداد کلمات موجود در متن را تقسیم بر ۲۰۰ کرده و سقف آن را برگرداند. همچنین، کاراکترهای `.`، `?`، `!`، `,`، `;` و `:` باید نادیده گرفته شوند. کلمات با یک یا چند کاراکتر `' '`، `'\t'` یا `'\n'` از یکدیگر جدا شدهاند. همچنین، تفاوتی برای طول کلمات قائل نمیشویم.
امضای تابع `estimateReadingTime` بهصورت زیر خواهد بود:
```php
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
```
خروجی موردانتظار:
```
1
2
1
10
```
# آنچه باید آپلود کنید
یک فایل *PHP* که تابع `estimateReadingTime` در آن پیادهسازی شده است آپلود کنید.
# قسمت آموزشی
در این قسمت راهنماییهای سوال، به مرور اضافه میشود. مشکلاتتان در راستای حل سوال را میتوانید از بخش ["سوال بپرسید"](https://quera.ir/contest/clarification/20699/) مطرح کنید.
<details class="blue">
<summary>راهنمایی ۱</summary>
یک روش برای پیادهسازی تابع `estimateReadingTime`، حذف علائم نگارشی، جداسازی متن نهایی بر اساس *whitespace* و در نهایت شمارش تعداد کلمات است:
```php
<?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
}
```
</details>
<details class="blue">
<summary>راهنمایی ۲</summary>
روش دیگر برای پیادهسازی تابع `estimateReadingTime`، استفاده از تابع `str_word_count` برای محاسبهی تعداد کلمات موجود در متن است:
```php
<?php
function estimateReadingTime(string $text): int
{
return ceil(str_word_count($text) / 200);
}
```
</details>