diff options
| -rw-r--r-- | AufgabeFFP6.hs | 37 |
1 files changed, 35 insertions, 2 deletions
diff --git a/AufgabeFFP6.hs b/AufgabeFFP6.hs index b786854..73e5d62 100644 --- a/AufgabeFFP6.hs +++ b/AufgabeFFP6.hs | |||
| @@ -29,7 +29,7 @@ eval f g = myfoldl' (elems g) (elems f) | |||
| 29 | 29 | ||
| 30 | yield :: F -> W -> [G] | 30 | yield :: F -> W -> [G] |
| 31 | yield = yield_bt | 31 | yield = yield_bt |
| 32 | -- yield = yield_gtf | 32 | --yield = yield_gtf |
| 33 | 33 | ||
| 34 | -------------------------------------------------------------------------------- | 34 | -------------------------------------------------------------------------------- |
| 35 | 35 | ||
| @@ -88,7 +88,40 @@ yield_bt f w = map (\(_, _, _, g) -> listArray (1, length g) g) nodes | |||
| 88 | 88 | ||
| 89 | -------------------------------------------------------------------------------- | 89 | -------------------------------------------------------------------------------- |
| 90 | 90 | ||
| 91 | -- yield_gtf :: F -> W -> [G] | 91 | yield_gtf :: F -> W -> [G] |
| 92 | yield_gtf = filt . transform . generate | ||
| 93 | |||
| 94 | generate :: F -> W -> (F, W, [G]) | ||
| 95 | --generate f w = (f, w, [ array (1,n) [ (i, j) | i<-[1..n], j<-[(+), (-), (*)] ] ] ) | ||
| 96 | generate f w = (f, w, [ array (1,n) [(i, j) | i<-[1..n], j<-[(+)] ] ] ) | ||
| 97 | where | ||
| 98 | n = snd $ bounds f | ||
| 99 | --ops = [(+), (-), (*), (./.)] | ||
| 100 | --entries = [ (i, j) | i<-[1..3] , j<-ops ] | ||
| 101 | |||
| 102 | transform :: (W -> (F,W,[G])) -> W -> ((F, W, [G]), [W]) | ||
| 103 | transform fun = fun2 | ||
| 104 | where | ||
| 105 | fun2 = \w -> (fun w, [1]) | ||
| 106 | |||
| 107 | filt :: (W -> ((F,W,[G]),[W]) ) -> W -> [G] | ||
| 108 | filt fun w = [ g!!i | i <- [0..n], res!!i == w ] | ||
| 109 | where | ||
| 110 | ( (f, _, g), res ) = fun w | ||
| 111 | n = (length g) - 1 | ||
| 112 | |||
| 113 | third :: (F, W, [G]) -> [G] | ||
| 114 | third (_, _, g) = g | ||
| 115 | |||
| 116 | --generate :: F -> (F, W, [G]) | ||
| 117 | --generate f = \w -> (f, w, [ array (1,2) [ (1,(+)), (2,(+)) ] ] ) | ||
| 118 | -- | ||
| 119 | --transform :: (F, W, [G]) -> (F, W, [G]) | ||
| 120 | --transform fun = fun | ||
| 121 | -- | ||
| 122 | --filt :: (F, W, [G]) -> [G] | ||
| 123 | --filt (f, w, g) = g | ||
| 124 | |||
| 92 | 125 | ||
| 93 | -------------------------------------------------------------------------------- | 126 | -------------------------------------------------------------------------------- |
| 94 | 127 | ||
