المسارات
/
Haskell
Haskell
/
التمارين
/
حاصلات ضرب متناظرة
حاصلات ضرب متناظرة

حاصلات ضرب متناظرة

متوسط

التعليمات

اكتشف الجداءات المتناظرة في نطاق معطى.

العدد المتناظر هو عدد يبقى كما هو عند عكس أرقامه. على سبيل المثال، 121 عدد متناظر، أما 112 فليس كذلك.

إذا أُعطي نطاق من الأعداد، فابحث عن أكبر وأصغر الأعداد المتناظرة التي تكون جداءات لعددين ضمن هذا النطاق.

ينبغي أن يُرجع حلّك أكبر وأصغر الأعداد المتناظرة، مع عوامل كل منهما ضمن النطاق. وإذا كان لأكبر عدد متناظر أو أصغر عدد متناظر أكثر من زوج واحد من العوامل ضمن النطاق، فأرجِع جميع الأزواج.

مثال 1

بفرض أن النطاق هو [1, 9] (شاملًا الطرفين)...

وبفرض أن قائمة جميع الجداءات الممكنة ضمن هذا النطاق هي: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 16, 18, 15, 21, 24, 27, 20, 28, 32, 36, 25, 30, 35, 40, 45, 42, 48, 54, 49, 56, 63, 64, 72, 81]

الجداءات المتناظرة كلها أعداد من رقم واحد (في هذه الحالة): [1, 2, 3, 4, 5, 6, 7, 8, 9]

أصغر جداء متناظر هو 1. وعوامله هي (1, 1). أكبر جداء متناظر هو 9. وعوامله هي (1, 9) و(3, 3).

مثال 2

بفرض أن النطاق هو [10, 99] (شاملًا الطرفين)...

أصغر جداء متناظر هو 121. وعوامله هي (11, 11). أكبر جداء متناظر هو 9009. وعوامله هي (91, 99).

تلميحات

لحل هذا التمرين، تحتاج إلى تنفيذ هاتين الدالتين:

  • largestPalindrome
  • smallestPalindrome

تستقبل الدالتان الحدين الأدنى والأعلى للعوامل، وتُرجعان زوجًا (value, [(factor1, factor2)]) يحتوي على العدد المتناظر وأزواج العوامل المحتملة له.

يمكنك استخدام التوقيعات المقدمة إذا لم تكن متأكدًا من الأنواع، لكن لا تدعها تقيد إبداعك.

لا بأس في إرجاع عناصر مكررة في مصفوفة العوامل، ولا يهم ترتيب العوامل.

يُستحسن أن تفكر في استخدام خوارزمية مختلفة قليلًا للعثور على أعداد متناظرة صغيرة أو كبيرة.

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

مستعد لبدء حاصلات ضرب متناظرة؟

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