المسارات
/
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 تقبل مصفوفتين كمعاملات. تتكون كل مصفوفة من رقم واحد أو أكثر بين 0 و9. ينبغي للدالة أن تفسّر كل مصفوفة على أنها عدد، وتُرجع مجموع هذين العددين.

<?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 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.