diff options
| -rw-r--r-- | AufgabeFFP6.hs | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/AufgabeFFP6.hs b/AufgabeFFP6.hs index b4bb34b..b786854 100644 --- a/AufgabeFFP6.hs +++ b/AufgabeFFP6.hs | |||
| @@ -5,10 +5,10 @@ where | |||
| 5 | 5 | ||
| 6 | import Data.Array | 6 | import Data.Array |
| 7 | 7 | ||
| 8 | type F = Array Int Int | 8 | type F = Array Int Int |
| 9 | type Op = Int -> Int -> Int | 9 | type Op = Int -> Int -> Int |
| 10 | type G = Array Int (Op) | 10 | type G = Array Int (Op) |
| 11 | type W = Int | 11 | type W = Int |
| 12 | 12 | ||
| 13 | -------------------------------------------------------------------------------- | 13 | -------------------------------------------------------------------------------- |
| 14 | 14 | ||
| @@ -17,7 +17,7 @@ type W = Int | |||
| 17 | 17 | ||
| 18 | myfoldl :: [(a -> b -> a)] -> a -> [b] -> a | 18 | myfoldl :: [(a -> b -> a)] -> a -> [b] -> a |
| 19 | myfoldl _ f1 [] = f1 | 19 | myfoldl _ f1 [] = f1 |
| 20 | myfoldl (g:gs) f1 (f2:fs) = myfoldl gs (g f1 f2) fs | 20 | myfoldl (g:gs) f1 (f2:fs) = myfoldl gs (g f1 f2) fs |
| 21 | 21 | ||
| 22 | myfoldl' :: [(a -> a -> a)] -> [a] -> a | 22 | myfoldl' :: [(a -> a -> a)] -> [a] -> a |
| 23 | myfoldl' g (f:fs) = myfoldl g f fs | 23 | myfoldl' g (f:fs) = myfoldl g f fs |
| @@ -36,10 +36,9 @@ yield = yield_bt | |||
| 36 | type Node = ([Int], [Int], W, [Op]) | 36 | type Node = ([Int], [Int], W, [Op]) |
| 37 | 37 | ||
| 38 | goal_yield_bt :: Node -> Bool | 38 | goal_yield_bt :: Node -> Bool |
| 39 | goal_yield_bt (f, f', w, g) | 39 | goal_yield_bt (_, _, _, []) = False -- no operators |
| 40 | | length g == 0 = False -- no operators | 40 | goal_yield_bt (f, [], w, g) = eval (listArray (1, length f) f) (listArray (1, length g) g) == w |
| 41 | | length f' == 0 = eval (listArray (1, length f) f) (listArray (1, length g) g) == w | 41 | goal_yield_bt (_, _, _, _) = False |
| 42 | | otherwise = False | ||
| 43 | 42 | ||
| 44 | succ_yield_bt :: Node -> [Node] | 43 | succ_yield_bt :: Node -> [Node] |
| 45 | succ_yield_bt (_, [], _, _) = [] | 44 | succ_yield_bt (_, [], _, _) = [] |
| @@ -89,7 +88,7 @@ yield_bt f w = map (\(_, _, _, g) -> listArray (1, length g) g) nodes | |||
| 89 | 88 | ||
| 90 | -------------------------------------------------------------------------------- | 89 | -------------------------------------------------------------------------------- |
| 91 | 90 | ||
| 92 | -- yield_gtf :: Array Int Int -> Int -> [Array Int (Int -> Int -> Int)] | 91 | -- yield_gtf :: F -> W -> [G] |
| 93 | 92 | ||
| 94 | -------------------------------------------------------------------------------- | 93 | -------------------------------------------------------------------------------- |
| 95 | 94 | ||
