كان هناك خادم حكيم أنقذ حياة أمير. وعد الملك بأن يمنحه كل ما يمكن أن يطلبه. ولأن الخادم كان يعلم أن الملك يحب الشطرنج، أخبره أنه يود الحصول على حبات من القمح. حبة واحدة على المربع الأول من رقعة الشطرنج، ويتضاعف عدد الحبات في كل مربع يليه.
احسب عدد حبات القمح على رقعة شطرنج.
تحتوي رقعة الشطرنج على 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.
سجّل في Exercism لتتعلّم وتتقن PHP عبر 11 مفهومًا122 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.