module Angabe1 where {- 1. Vervollstaendigen Sie gemaess Angabentext! 2. Vervollständigen Sie auch die vorgegebenen Kommentaranfänge! 3. Loeschen Sie keine Deklarationen aus diesem Rahmenprogramm, auch nicht die Modulanweisug! 4. Achten Sie darauf, dass `Gruppe' Leserechte fuer Ihre Abgabedatei hat! -} type Nat0 = Int type Zeichenreihe = String type Teilzeichenreihe = String type IstTeilzeichenreihe = Bool type Zerlegungszeuge = (Zeichenreihe,Zeichenreihe,Zeichenreihe) type Zerlegungszeugen = [Zerlegungszeuge] -- Aufgabe A.1 ist_tzr :: Zeichenreihe -> Teilzeichenreihe -> IstTeilzeichenreihe {- Solution: - if both strings are the same, True - if the second string is empty, True - if the second string is longer than the first, False - otherwise, compare the first characters of both strings and call the function recursively again. If the second string is contained in the first string, it will get equal to [] eventually and the function will return True. If it is not, the first string will get smaller than the second eventually and the function will return False -} ist_tzr x y | y == x = True | y == [] = True | length y > length x = False | otherwise = if head x == head y then ist_tzr (tail x) (tail y) else ist_tzr (tail x) y -- Aufgabe A.2 --tzr_zeuge :: Zeichenreihe -> Teilzeichenreihe -> Zerlegungszeuge {- Knapp, aber gut nachvollziehbar geht tzr_zeuge folgendermassen vor: ... -} -- Aufgabe A.3 --tzr_zeugen :: Zeichenreihe -> Teilzeichenreihe -> Zerlegungszeugen {- Knapp, aber gut nachvollziehbar geht tzr_zeugen folgendermassen vor: ... -} -- Aufgabe A.4 --wieOft :: Zeichenreihe -> Teilzeichenreihe -> Nat0 {- Knapp, aber gut nachvollziehbar geht wieOft folgendermassen vor: ... -}