Bestimme für zwei beliebige Listen A und B, ob:
A gleich der Liste B ist; oderA die Liste B enthält (A ist eine Oberliste von B); oderA in der Liste B enthalten ist (A ist eine Unterliste von B); oderA und B also ungleich sindKonkret: Die Liste A ist gleich der Liste B, wenn beide Listen dieselben Werte in derselben Reihenfolge enthalten.
Die Liste A ist eine Oberliste von B, wenn A eine zusammenhängende Teilfolge von Werten enthält, die gleich B ist.
Die Liste A ist eine Unterliste von B, wenn B eine zusammenhängende Teilfolge von Werten enthält, die gleich A ist.
Beispiele:
A = [] und B = [] (beide Listen sind leer), dann sind A und B gleichA = [1, 2, 3] und B = [], dann ist A eine Oberliste von B
A = [] und B = [1, 2, 3], dann ist A eine Unterliste von B
A = [1, 2, 3] und B = [1, 2, 3, 4, 5], dann ist A eine Unterliste von B
A = [3, 4, 5] und B = [1, 2, 3, 4, 5], dann ist A eine Unterliste von B
A = [3, 4] und B = [1, 2, 3, 4, 5], dann ist A eine Unterliste von B
A = [1, 2, 3] und B = [1, 2, 3], dann sind A und B gleichA = [1, 2, 3, 4, 5] und B = [2, 3, 4], dann ist A eine Oberliste von B
A = [1, 2, 4] und B = [1, 2, 3, 4, 5], dann sind A und B ungleichA = [1, 2, 3] und B = [1, 3, 2], dann sind A und B ungleichDer Typ
Ordering
hat drei Konstruktoren: LT („kleiner als“), EQ („gleich“) und GT („größer
als“). Damit lässt sich die Ordnung von Listen ausdrücken: Just LT bedeutet
„Unterliste“ und so weiter, und Nothing bedeutet, dass es sich weder um eine
Unterliste noch um eine Oberliste handelt und die Listen auch nicht gleich sind.
Melde dich bei Exercism an, um Haskell mit 107 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.