مسیرها
/
PHP
PHP
/
تمرین‌ها
/
اعداد خوش‌شانس
اعداد خوش‌شانس

اعداد خوش‌شانس

تمرین یادگیری

مقدمه

بازی با نوع

بازی با نوع را با نام «تبدیل اجباری نوع» هم می‌شناسند. بازی با نوع به این معناست که دو مقدار از دو نوع متفاوت برای انجام یک عملیات به یک نوع واحد تبدیل اجباری می‌شوند.

$baskets = 5 // int
$apples_per_basket = "3" // string
$baskets * $apples_per_basket
# => 15

این کار می‌تواند به‌صورت ضمنی انجام شود (به مثال بالا نگاه کنید)، یا به‌صورت صریح با «تبدیل نوع» به سبک C:

$apples_per_basket = "3" // string
$my_number = (int) $apples_per_basket // cast string to int
# => 3 // int

نوع‌های مجاز برای تبدیل نوع دستی عبارت‌اند از: bool، int، float، string، array، object. بیشتر از همه، از تبدیل نوع برای تغییر یک عدد صحیح (int) به یک عدد اعشاری (float) یا برعکس استفاده می‌شود.

دستورالعمل‌ها

دوستتان Kojo عاشق اعداد است. او یک وب‌سایت کوچک برای سرگرمی با اعداد دارد. Kojo در برنامه‌نویسی چندان ماهر نیست، برای همین از شما کمک خواسته است.

شما دو متد کمکی برای بازی‌های عددی تازه در وب‌سایت Kojo می‌سازید و یک متد سوم هم برای اعتبارسنجی ورودی‌ای که کاربر می‌تواند وارد کند.

1. محاسبه‌ی مجموع اعداد روی ماشین اسلات

یکی از بازی‌های وب‌سایت Kojo شبیه ماشین اسلاتی است که دو گروه چرخ را نشان می‌دهد که رقم‌هایی روی آن‌ها نوشته شده است. هر گروه از رقم‌ها نماینده‌ی یک عدد است. Kojo برای مکانیک بازی باید مجموع آن دو عدد را بداند.

متدی به اسم sumUp بنویسید که دو آرایه را به عنوان پارامتر می‌پذیرد. هر آرایه از یک یا چند رقم بین ۰ تا ۹ تشکیل شده است. این تابع باید هر آرایه را به عنوان یک عدد تفسیر کند و مجموع آن دو عدد را برگرداند.

<?php
$lucky_numbers = new LuckyNumbers()

$lucky_numbers->sumUp([1, 2, 3], [0, 7]);
//=> 130

// [1, 2, 3] represents 123 and [0, 7] represents 7.
// 123 + 7 = 130

2. تشخیص این که یک عدد پالیندروم است یا نه

یک بازی دیگر در وب‌سایت، آزمون کوتاهی به اسم «شماره‌های خوش‌شانس» است. کاربر می‌تواند یک عدد وارد کند و بعد ببیند که آن عدد به دنباله یا الگوی خاصی تعلق دارد یا نه. دنباله یا الگوی «شماره‌های خوش‌شانس» هر ماه عوض می‌شود و هر کاربر فقط تعداد محدودی فرصت برای حدس آن دارد.

شماره‌های خوش‌شانس این ماه باید عددهایی باشند که «پالیندروم» هستند. عددهای پالیندروم وقتی رقم‌هایشان برعکس می‌شود، تغییری نمی‌کنند.

تابع جدید isPalindrome را پیاده‌سازی کنید که یک عدد صحیح را به عنوان پارامتر می‌پذیرد. این تابع اگر عدد پالیندروم باشد باید true برگرداند و در غیر این صورت false. عدد ورودی همیشه یک عدد صحیح مثبت خواهد بود.

<?php
$lucky_numbers = new LuckyNumbers()

$lucky_numbers->isPalindrome(1441);
//=>  true

$lucky_numbers->isPalindrome(123);
//=> false

3. تولید پیام خطا برای ورودی نامعتبر کاربر

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

در ادامه چند نکته‌ی بیشتر درباره‌ی نحوه‌ی ارائه‌ی مقدار یک کادر ورودی آورده شده است.

  • اگر کاربر چیزی در یک کادر تایپ کند، مقدار مربوط به آن همیشه یک رشته است، حتی اگر کاربر فقط عدد تایپ کرده باشد.
  • اگر کاربر چیزی تایپ کند و بعد پاکش کند، متغیر یک رشته‌ی خالی خواهد بود.
  • حتی پیش از آن که کاربر شروع به تایپ کند، متغیر یک رشته‌ی خالی است.

تابعی به اسم validate بنویسید که ورودی کاربر را به عنوان پارامتر می‌پذیرد. اگر کاربر هیچ ورودی‌ای نداده باشد، validate باید 'Required field' را برگرداند. اگر ورودی نماینده‌ی یک عدد صحیح مثبت و ناصفر نباشد (بر اساس قواعد تبدیل نوع PHP)، باید 'Must be a whole number larger than 0' برگردانده شود. در بقیه‌ی حالت‌ها می‌توانید فرض کنید ورودی معتبر است؛ در آن صورت مقدار بازگشتی باید یک رشته‌ی خالی باشد.

<?php
$lucky_numbers = new LuckyNumbers()

$lucky_numbers->validate('123');
// => ''

$lucky_numbers->validate('');
// => 'Required field'

$lucky_numbers->validate('abc');
// => 'Must be a whole number larger than 0'
ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
PHP Exercism

آماده‌اید اعداد خوش‌شانس را شروع کنید؟

در Exercism ثبت‌نام کنید تا PHP را همراه با 11 مفهوم122 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.