Sous-liste

Sous-liste

Moyen

Instructions

Étant donné deux tableaux A et B quelconques, détermine si :

  • le tableau A est égal au tableau B ; ou
  • le tableau A contient le tableau B (A est un super-tableau de B) ; ou
  • le tableau A est contenu dans le tableau B (A est un sous-tableau de B) ; ou
  • aucune de ces propositions n'est vraie, donc les tableaux A et B sont différents

Plus précisément, le tableau A est égal au tableau B si les deux tableaux contiennent les mêmes valeurs dans le même ordre. Le tableau A est un super-tableau de B si A contient une sous-séquence contiguë de valeurs égale à B. Le tableau A est un sous-tableau de B si B contient une sous-séquence contiguë de valeurs égale à A.

Exemples :

  • si A = [] et B = [] (les deux tableaux sont vides), alors A et B sont égaux
  • si A = [1, 2, 3] et B = [], alors A est un super-tableau de B
  • si A = [] et B = [1, 2, 3], alors A est un sous-tableau de B
  • si A = [1, 2, 3] et B = [1, 2, 3, 4, 5], alors A est un sous-tableau de B
  • si A = [3, 4, 5] et B = [1, 2, 3, 4, 5], alors A est un sous-tableau de B
  • si A = [3, 4] et B = [1, 2, 3, 4, 5], alors A est un sous-tableau de B
  • si A = [1, 2, 3] et B = [1, 2, 3], alors A et B sont égaux
  • si A = [1, 2, 3, 4, 5] et B = [2, 3, 4], alors A est un super-tableau de B
  • si A = [1, 2, 4] et B = [1, 2, 3, 4, 5], alors A et B sont différents
  • si A = [1, 2, 3] et B = [1, 3, 2], alors A et B sont différents

Indices

Le type Ordering possède trois constructeurs : LT (« inférieur à »), EQ (« égal à ») et GT (« supérieur à »). Ils peuvent représenter l'ordre d'une sous-liste : Just LT signifie « sous-liste », etc., tandis que Nothing signifie qu'il ne s'agit ni d'une sous-liste, ni d'une super-liste, ni d'une égalité.

Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Haskell Exercism

Prêt à commencer Sous-liste ?

Inscris-toi sur Exercism pour apprendre et maîtriser Haskell avec 107 exercices, et un vrai mentorat humain, le tout gratuitement.