diff --git a/code/Aufgabe1.hs b/code/Aufgabe1.hs index f7f4380..665f976 100644 --- a/code/Aufgabe1.hs +++ b/code/Aufgabe1.hs @@ -78,7 +78,18 @@ tzr_zeugen :: Zeichenreihe -> Teilzeichenreihe -> Zerlegungszeugen tzr_zeugen [] [] = [] tzr_zeugen z t | not (ist_tzr z t) = [] - | otherwise = [] + | wieOft z t == 1 = [tzr_zeuge z t] + | otherwise = get_all_substring_variants z t [] + +get_all_substring_variants :: Zeichenreihe -> Teilzeichenreihe -> Zerlegungszeugen -> Zerlegungszeugen +get_all_substring_variants z t r + | not (ist_tzr z t) = r + | otherwise = + let + pos = (find_tzr_position z t 0) - 1 + new_res = r ++ [(tzr_zeuge z t)] + in + get_all_substring_variants (take pos z) t new_res -- Aufgabe A.4