annotate exercises/src/Exercise_5.hs @ 11:a721abd5a135

week 5
author Markus Kaiser <markus.kaiser@in.tum.de>
date Wed, 14 Nov 2012 18:33:30 +0100
parents
children 8496af3b866b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
1 module Exercise_5 where
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
2 import Data.Maybe
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
3
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
4 {- Library DO NOT CHANGE -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
5 type State = Integer
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
6 type DA = (State, State -> Char -> State, State -> Bool)
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
7 type ListDA = (State, [((State, Char), State)], [State])
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
8
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
9 a :: DA
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
10 a = (0, delta, (==1))
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
11 where
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
12 delta 0 'a' = 1
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
13 delta 1 'a' = 1
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
14 delta 2 'a' = 1
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
15 delta 0 'b' = 2
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
16 delta 1 'b' = 2
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
17 delta 2 'b' = 2
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
18
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
19 toDA :: ListDA -> DA
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
20 toDA (start, delta, final) = (start, deltaFun delta, (`elem` final))
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
21 where deltaFun dl = curry (fromMaybe 0 . flip lookup dl)
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
22 {- End Library -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
23
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
24
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
25 {---------------------------------------------------------------------}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
26 {- Aufgabe G5.1 -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
27
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
28 iter :: Int -> (a -> a) -> a -> a
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
29 iter n f x = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
30
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
31
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
32 pow :: Int -> Int -> Int
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
33 pow n k = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
34
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
35
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
36 drop' :: Int -> [a] -> [a]
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
37 drop' n xs = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
38
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
39
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
40 replicate' :: Int -> a -> [a]
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
41 replicate' n x = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
42
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
43
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
44
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
45 {---------------------------------------------------------------------}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
46 {- Aufgabe G5.2 -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
47
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
48 partition_rec :: (a -> Bool) -> [a] -> ([a], [a])
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
49 partition_rec p xs = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
50
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
51
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
52 partition_foldl :: (a -> Bool) -> [a] -> ([a], [a])
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
53 partition_foldl p xs = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
54
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
55
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
56 partition_filter :: (a -> Bool) -> [a] -> ([a], [a])
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
57 partition_filter p xs = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
58
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
59
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
60 zipWith' :: (a -> b -> c) -> [a] -> [b] -> [c]
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
61 zipWith' f xs ys = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
62
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
63
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
64
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
65 {---------------------------------------------------------------------}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
66 {- Aufgabe H5.1 -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
67
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
68 fixpoint :: (a -> a -> Bool) -> (a -> a) -> a -> a
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
69 fixpoint = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
70
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
71
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
72 cents :: [Integer] -> [Integer]
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
73 cents = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
74
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
75
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
76 trancl :: [(Integer, Integer)] -> [(Integer, Integer)]
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
77 trancl = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
78
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
79
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
80
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
81 {---------------------------------------------------------------------}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
82 {- Aufgabe H5.2 -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
83
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
84 advance :: DA -> State -> String -> State
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
85 advance = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
86
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
87
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
88 prop_advance_empty :: ListDA -> State -> Bool
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
89 prop_advance_empty = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
90
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
91
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
92 prop_advance_single :: ListDA -> State -> Char -> Bool
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
93 prop_advance_single = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
94
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
95
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
96 prop_advance_concat :: ListDA -> State -> String -> String -> Bool
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
97 prop_advance_concat = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
98
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
99
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
100 accept :: DA -> String -> Bool
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
101 accept = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
102
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
103
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
104 reachableStates :: DA -> State -> [Char] -> [State]
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
105 reachableStates = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
106
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
107
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
108
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
109 {---------------------------------------------------------------------}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
110 {- Aufgabe H5.3 -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
111
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
112 {-WETT-}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
113 quasiSubseq :: Eq a => [a] -> [a] -> Bool
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
114 quasiSubseq xs ys = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
115 {-TTEW-}