الحبوب

الحبوب

متوسط

مقدمة

كان هناك خادم حكيم أنقذ حياة أمير. وعد الملك بأن يمنحه كل ما يمكن أن يطلبه. ولأن الخادم كان يعلم أن الملك يحب الشطرنج، أخبره أنه يود الحصول على حبات من القمح. حبة واحدة على المربع الأول من رقعة الشطرنج، ويتضاعف عدد الحبات في كل مربع يليه.

التعليمات

احسب عدد حبات القمح على رقعة شطرنج.

تحتوي رقعة الشطرنج على 64 مربعًا. يحتوي المربع 1 على حبة واحدة، ويحتوي المربع 2 على حبتين، ويحتوي المربع 3 على أربع حبات، وهكذا، مع مضاعفة العدد في كل مرة.

اكتب كودًا يحسب:

  • عدد الحبات على مربع معيّن
  • العدد الإجمالي للحبات على رقعة الشطرنج

القيمة العظمى للعدد الصحيح

وفقًا لـوثائق PHP، هناك قيمة عظمى للعدد الصحيح:

يعتمد حجم int على النظام الأساسي، وإن كانت القيمة العظمى المعتادة نحو ملياري (وهذا يعني 32 بت بإشارة). وعادةً ما تكون القيمة العظمى على أنظمة 64 بت نحو 9E18. ولا تدعم PHP قيم int غير المُوقّعة.

بعبارة أخرى، لا تستطيع PHP تمثيل أي عدد يساوي 2^63 أو أكبر منه كعدد صحيح. تتطلب بعض اختبارات هذا التمرين أعدادًا صحيحة من 64 بت (2^64)، وهو ما يتجاوز حدّ حجم الأعداد الصحيحة في PHP.

تُحوّل PHP تلقائيًا قيم int إلى float عندما تصبح الأعداد كبيرة جدًا:

إذا صادفت PHP عددًا يتجاوز حدود النوع int، فسيُفسَّر على أنه float بدلًا من ذلك. كذلك، أي عملية ينتج عنها عدد يتجاوز حدود النوع int ستُرجع float بدلًا من ذلك.

لكن النوع float دقّته محدودة. والملك يكره عدم الدقة. لذلك قرّر الملك أن يتوقّع نتائج الحسابات على هيئة سلسلة نصية تعبّر عن قيمة العدد الصحيح، بدلًا من التعبير عن الإجابة بـint أو float. وهو يريد حسابات على الأعداد الصحيحة، لا مجرّد تحويل كسول في النهاية.

هل يمكنك حلّ هذا بتجنّب الأعداد الأكبر مما تسمح به اللغة مباشرةً؟ ومن فضلك لا تستخدم كذلك مكتبات PHP أخرى مثل gmp أو bc.

تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
PHP Exercism

مستعد لبدء الحبوب؟

سجّل في Exercism لتتعلّم وتتقن PHP عبر 11 مفهومًا122 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.