From e1614ad91fef335223ed63fef8d8c0bc8da9cf42 Mon Sep 17 00:00:00 2001 From: Ivaylo Ivanov Date: Sat, 16 Oct 2021 12:09:13 +0200 Subject: [PATCH] Remove special case handling for UE1 A.3, add comments --- code/Aufgabe1.hs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/code/Aufgabe1.hs b/code/Aufgabe1.hs index 665f976..456bcbe 100644 --- a/code/Aufgabe1.hs +++ b/code/Aufgabe1.hs @@ -1,5 +1,7 @@ module Angabe1 where +import Data.List + {- 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! @@ -70,15 +72,18 @@ find_tzr_position (z:zs) t n | otherwise = find_tzr_position zs t (n + 1) -- Aufgabe A.3 -{- Knapp, aber gut nachvollziehbar geht tzr_zeugen folgendermassen vor: - ... +{- Solution: + - the base cases are as follows: + - both strings are empty, return an empty array + - the second string is not a substring of the first, return an empty array + - for handling the other cases: + - find a possible split and add it to the results array -} tzr_zeugen :: Zeichenreihe -> Teilzeichenreihe -> Zerlegungszeugen tzr_zeugen [] [] = [] tzr_zeugen z t | not (ist_tzr z t) = [] - | wieOft z t == 1 = [tzr_zeuge z t] | otherwise = get_all_substring_variants z t [] get_all_substring_variants :: Zeichenreihe -> Teilzeichenreihe -> Zerlegungszeugen -> Zerlegungszeugen