Haskell :: Sprache
  Suche:
 Blatt 6 [ohne Text] 27.11.2002 (22:51 Uhr) amo
 Aufgabe 1 27.11.2002 (22:53 Uhr) amo
 Aufgabe 2 27.11.2002 (22:57 Uhr) amo
 Mehrfachtests 29.11.2002 (05:03 Uhr) amo
 Re: Aufgabe 2 - allDifferent 29.11.2002 (05:12 Uhr) amo
 allDifferent2 01.12.2002 (19:39 Uhr) amo
 allDifferent3 01.12.2002 (19:41 Uhr) amo
 allDifferent -> allDifferent3 01.12.2002 (19:57 Uhr) amo
 allDifferent -> allDifferent3 29.11.2002 (04:56 Uhr) amo
 allDifferent4 01.12.2002 (20:08 Uhr) amo
 allDifferent5 01.12.2002 (20:16 Uhr) amo
 allDifferents 01.12.2002 (20:24 Uhr) amo
 Aufgabe 3 - substring 27.11.2002 (22:59 Uhr) amo
 Aufgabe 4 27.11.2002 (23:47 Uhr) amo
 checkHTML 02.12.2002 (07:34 Uhr) amo
Das hab ich immer noch nicht hinbekommen.
Hat das schon wer?
Hier ist mal das, was ich bis jetzt habe:

klammerInhalt :: [a] -> [a]
klammerInhalt xs = tail (init (xs))

isGeklammert :: Eq a => a -> a -> [a] -> Bool
isGeklammert o s xs = (head xs == o) && (last xs == s)

isHtmlKlammer :: [[Char]] -> Bool
isHtmlKlammer = isGeklammert "<html>" "</html>"
isHeadKlammer :: [[Char]] -> Bool
isHeadKlammer = isGeklammert "<head>" "</head>"
isTitleKlammer :: [[Char]] -> Bool
isTitleKlammer = isGeklammert "<title>" "</title>"
isMetaKlammer :: [[Char]] -> Bool
isMetaKlammer = isGeklammert "<meta>" "</meta>"
isBodyKlammer :: [[Char]] -> Bool
isBodyKlammer = isGeklammert "<body>" "</body>"


listeBis :: Eq a => a -> [a] -> [a]
listeBis _ [] = []
listeBis e (x:xs)
   | e == x = [x]
   | otherwise = x : listeBis e xs


anfKlammer :: (Eq a, Show a) => a -> a -> [a] -> [a]
anfKlammer _ _ [] = []
anfKlammer o s (x:xs)
   | notInList s xs = error("Uebungsblatt_06.anfKlammer: Klammerungsfehler: " ++ show (xs) ++ " enthält die schließende Klammer " ++ show s ++ " nicht.")
   | o == x = x : listeBis s xs
   | otherwise = error ("Uebungsblatt_06.anfKlammer: Klammerungsfehler: " ++ show (x:xs) ++ " beginnt nicht mit " ++ show o ++ ".")


trenneAnfKlammernAb :: String -> String -> Char -> [String] -> [[String]]
trenneAnfKlammernAb _ _ _ [] = [[]]
trenneAnfKlammernAb o s a (x:xs)
   | a == '1' =
      if x == o && inList s xs then
         let ak = anfKlammer o s (x:xs) in
            ak : [drop (length ak - 1) xs]
      else [x:xs]
   | a == '*' =
      if x == o && inList s xs then
         let ak = anfKlammer o s (x:xs) in
            ak : trenneAnfKlammernAb o s a (drop (length ak - 1) xs)
      else [x:xs]
   | a == '+' =
      if x == o && inList s xs then
         let ak = anfKlammer o s (x:xs) in
            ak : trenneAnfKlammernAb o s '*' (drop (length ak - 1) xs)
      else error ("Uebungsblatt_06.trenneAnfKlammernAb: Aktion " ++ show a ++ ": Klammerpaar " ++ show o ++ " - " ++ show s ++ " nicht in " ++ show (x:xs) ++ " enthalten.")
   | otherwise = error ("Uebungsblatt_06.trenneAnfKlammernAb: Aktion " ++ show a ++ " nicht definiert.")




hatBodyKlasse _ = True
hatHeadKlasse _ = True


checkHTML :: String -> Bool
checkHTML s = let w = words s
                  i = klammerInhalt w in
   isHtmlKlammer w && hatHeadKlasse i && hatBodyKlasse i
 checkHTML 03.12.2002 (19:23 Uhr) amo
 checkHTML - Primitivversion 04.12.2002 (05:03 Uhr) amo
 Re: checkHTML - Primitivversion 04.12.2002 (05:09 Uhr) amo
 ganze Datei für Blatt 6 04.12.2002 (12:52 Uhr) amo
0 User im Forum. Kostenloses Forumhosting von plaudern.de. Dieses Forum im eigenen Design entführen. Impressum