Dadas dos listas cualesquiera A y B, determina si:
A es igual a la lista B; oA contiene la lista B (la lista A es una superlista de B); oA está contenida en la lista B (la lista A es una sublista de B); oA y B no son igualesEn concreto, la lista A es igual a la lista B si ambas listas tienen los mismos valores en el mismo orden.
La lista A es una superlista de B si A contiene una subsecuencia contigua de valores igual a B.
La lista A es una sublista de B si B contiene una subsecuencia contigua de valores igual a A.
Ejemplos:
A = [] y B = [] (ambas listas están vacías), entonces A y B son igualesA = [1, 2, 3] y B = [], entonces A es una superlista de B
A = [] y B = [1, 2, 3], entonces A es una sublista de B
A = [1, 2, 3] y B = [1, 2, 3, 4, 5], entonces A es una sublista de B
A = [3, 4, 5] y B = [1, 2, 3, 4, 5], entonces A es una sublista de B
A = [3, 4] y B = [1, 2, 3, 4, 5], entonces A es una sublista de B
A = [1, 2, 3] y B = [1, 2, 3], entonces A y B son igualesA = [1, 2, 3, 4, 5] y B = [2, 3, 4], entonces A es una superlista de B
A = [1, 2, 4] y B = [1, 2, 3, 4, 5], entonces A y B no son igualesA = [1, 2, 3] y B = [1, 3, 2], entonces A y B no son igualesEl tipo Ordering tiene tres constructores, LT («menor que»), EQ («igual a») y GT («mayor que»). Estos pueden representar el orden de una sublista, donde Just LT significa «sublista», y así sucesivamente, y Nothing significa que no es una sublista, ni una superlista, ni que son iguales.
Regístrate en Exercism para aprender y dominar Haskell con 107 ejercicios y mentoría humana real, todo gratis.