زیرلیست

زیرلیست

متوسط

دستورالعمل‌ها

با توجه به دو فهرست دلخواه 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 و 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 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.