المسارات
/
Haskell
Haskell
/
التمارين
/
المصفوفة الفرعية
المصفوفة الفرعية

المصفوفة الفرعية

متوسط

التعليمات

بالنظر إلى أي مصفوفتين A وB، حدّد أيًّا من الحالات التالية ينطبق:

  • المصفوفة A مساوية لـ B؛ أو
  • المصفوفة A تحتوي على المصفوفة B (أي أن A مصفوفة شاملة لـ B)؛ أو
  • المصفوفة A مُتضمَّنة في المصفوفة B (أي أن A مصفوفة فرعية من B)؛ أو
  • لا تنطبق أي من الحالات السابقة، وعندها تكون المصفوفتان A وB غير متساويتين

وتحديدًا، تكون المصفوفة A مساوية لـ B إذا كانت المصفوفتان تحتويان على القيم نفسها بالترتيب نفسه. وتكون المصفوفة A مصفوفة شاملة لـ B إذا كانت A تحتوي على متتالية جزئية متصلة من القيم مساوية لـ B. وتكون المصفوفة A مصفوفة فرعية من B إذا كانت B تحتوي على متتالية جزئية متصلة من القيم مساوية لـ A.

أمثلة:

  • إذا كانت A = [] وB = [] (كلتا المصفوفتين فارغتان)، فإن A وB متساويتان
  • إذا كانت A = [1, 2, 3] وB = []، فإن A مصفوفة شاملة لـ B
  • إذا كانت A = [] وB = [1, 2, 3]، فإن A مصفوفة فرعية من B
  • إذا كانت A = [1, 2, 3] وB = [1, 2, 3, 4, 5]، فإن A مصفوفة فرعية من B
  • إذا كانت A = [3, 4, 5] وB = [1, 2, 3, 4, 5]، فإن A مصفوفة فرعية من B
  • إذا كانت A = [3, 4] وB = [1, 2, 3, 4, 5]، فإن A مصفوفة فرعية من B
  • إذا كانت A = [1, 2, 3] وB = [1, 2, 3]، فإن A وB متساويتان
  • إذا كانت A = [1, 2, 3, 4, 5] وB = [2, 3, 4]، فإن A مصفوفة شاملة لـ B
  • إذا كانت A = [1, 2, 4] وB = [1, 2, 3, 4, 5]، فإن A وB غير متساويتين
  • إذا كانت A = [1, 2, 3] وB = [1, 3, 2]، فإن A وB غير متساويتين

تلميحات

النوع Ordering له ثلاثة مُنشِئات، هي LT ("أصغر من") وEQ ("يساوي") وGT ("أكبر من"). يمكن لهذه المُنشِئات أن تمثّل علاقات القوائم الفرعية، حيث تعني Just LT "قائمة فرعية"، وهكذا، بينما تعني Nothing أنها ليست قائمة فرعية ولا قائمة فائقة ولا مساوية لها.

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

مستعد لبدء المصفوفة الفرعية؟

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