summaryrefslogtreecommitdiffstats
path: root/AufgabeFFP8.hs
diff options
context:
space:
mode:
authorMatthias Wisniowski <matthias.wisniowski@gmail.com>2012-05-30 01:44:12 +0200
committerMatthias Wisniowski <matthias.wisniowski@gmail.com>2012-05-30 01:44:12 +0200
commit205683f9690ff9231247ed18696ec64559eac393 (patch)
treec3b8a6f311c8288540ad4ba771954832b64542f7 /AufgabeFFP8.hs
parent78a4651eca476bbba1d916140f0054c49a02f980 (diff)
downloadffp-205683f9690ff9231247ed18696ec64559eac393.tar.gz
ffp-205683f9690ff9231247ed18696ec64559eac393.tar.bz2
ffp-205683f9690ff9231247ed18696ec64559eac393.zip
minfree_rhof
Diffstat (limited to 'AufgabeFFP8.hs')
-rw-r--r--AufgabeFFP8.hs26
1 files changed, 17 insertions, 9 deletions
diff --git a/AufgabeFFP8.hs b/AufgabeFFP8.hs
index 436e6cb..fffc717 100644
--- a/AufgabeFFP8.hs
+++ b/AufgabeFFP8.hs
@@ -116,18 +116,26 @@ minfree_bhof xs = head $ divideAndConquer (b_indiv (length xs)) b_solve (b_divid
116 116
117-- minfree refined daq higher order 117-- minfree refined daq higher order
118 118
119r_indiv :: (Int, [Int]) -> Bool
120r_indiv (a, []) = True
121r_indiv _ = False
119 122
120-- refined divide-and-conquer mittels higher order function 123r_solve :: (Int, [Int]) -> Int
121--minfree_rhof :: [Int] -> Int 124r_solve (a, _) = a
122--minfree_rhof = divideAndConquer r_indiv r_solve r_divide r_combine
123--
124--r_indiv :: (Int, [Int]) -> Bool
125--r_indiv (a, xs)
126
127-- optimised divide-and-conquer mittels higher order function
128--minfree_ohof :: [Int] -> Int
129 125
126r_divide :: (Int, [Int]) -> [(Int, [Int])]
127r_divide (a, xs)
128 | length smaller == b-a = [(b, bigger)]
129 | otherwise = [(a, smaller)]
130 where
131 b = a + 1 + (length xs) `div` 2
132 (smaller, bigger) = partition (<b) xs
133
134r_combine :: (Int, [Int]) -> [Int] -> Int
135r_combine _ (a:[]) = a
130 136
137minfree_rhof :: [Int] -> Int
138minfree_rhof xs = divideAndConquer r_indiv r_solve r_divide r_combine (0, xs)
131 139
132-- QuickCheck part 140-- QuickCheck part
133 141