Sublista

Sublista

Médio

Instruções

Dadas duas listas quaisquer, A e B, determine se:

  • A lista A é igual à lista B; ou
  • A lista A contém a lista B (A é uma superlista de B); ou
  • A lista A está contida na lista B (A é uma sublista de B); ou
  • Nenhuma das opções acima é verdadeira, portanto, as listas A e B são diferentes

Especificamente, a lista A é igual à lista B se as duas listas tiverem os mesmos valores na mesma ordem. A lista A é uma superlista de B se A contiver uma subsequência contígua de valores igual a B. A lista A é uma sublista de B se B contiver uma subsequência contígua de valores igual a A.

Exemplos:

  • Se A = [] e B = [] (as duas listas estão vazias), então A e B são iguais
  • Se A = [1, 2, 3] e B = [], então A é uma superlista de B
  • Se A = [] e B = [1, 2, 3], então A é uma sublista de B
  • Se A = [1, 2, 3] e B = [1, 2, 3, 4, 5], então A é uma sublista de B
  • Se A = [3, 4, 5] e B = [1, 2, 3, 4, 5], então A é uma sublista de B
  • Se A = [3, 4] e B = [1, 2, 3, 4, 5], então A é uma sublista de B
  • Se A = [1, 2, 3] e B = [1, 2, 3], então A e B são iguais
  • Se A = [1, 2, 3, 4, 5] e B = [2, 3, 4], então A é uma superlista de B
  • Se A = [1, 2, 4] e B = [1, 2, 3, 4, 5], então A e B são diferentes
  • Se A = [1, 2, 3] e B = [1, 3, 2], então A e B são diferentes

Dicas

O tipo Ordering tem três construtores, LT ("menor que"), EQ ("igual") e GT ("maior que"). Eles podem representar a ordenação de sublistas, com Just LT significando "sublista", e assim por diante, e Nothing significando que não é sublista, superlista nem igual.

Editar via GitHub O link abre em uma nova janela ou aba
Haskell Exercism

Tudo pronto para começar Sublista?

Crie sua conta no Exercism para aprender e dominar Haskell com 107 exercícios e mentoria humana de verdade, tudo de graça.