المتسلسلة

المتسلسلة

متوسط

التعليمات

إذا أُعطيتَ سلسلة نصية من الأرقام، فأخرِج جميع السلاسل النصية الفرعية المتتالية ذات الطول n فيها، بالترتيب الذي تظهر به.

فمثلًا، تحتوي السلسلة النصية "49142" على السلاسل النصية الفرعية التالية المكوّنة من 3 أرقام:

  • "491"
  • "914"
  • "142"

والسلاسل النصية الفرعية التالية المكوّنة من 4 أرقام:

  • "4914"
  • "9142"

وإذا طلبتَ سلاسل نصية مكوّنة من 6 أرقام من سلسلة نصية مكوّنة من 5 أرقام، فأنت تستحق ما يأتيك.

لاحظ أن هذه السلاسل النصية الفرعية مطلوب منها فقط أن تشغل مواضع متجاورة في المُدخل؛ ولا يلزم أن تكون الأرقام متتابعة عدديًا.

تلميحات

لإكمال هذا التمرين عليك تنفيذ الدالة slices، وهي تأخذ نصًا وتُرجع المتتاليات الجزئية من الأرقام بحجم محدّد:

إذا كانت هذه أول مرة تحلّ فيها هذا التمرين، فمن المستحسن أن تلتزم بتوقيع النوع المقدَّم:

slices :: Int -> String -> [[Int]]

لاحقًا، قد يكون من الجيد أن تعود إلى هذه المسألة وتجرّب أنواع بيانات ومكتبات أخرى:

  • ByteString، من الحزمة bytestring.
  • Sequence، من الحزمة containers.
  • Text، من الحزمة text.
  • Vector، من الحزمة vector.

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

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

مستعد لبدء المتسلسلة؟

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