diff options
Diffstat (limited to 'AufgabeFFP7.hs')
| -rw-r--r-- | AufgabeFFP7.hs | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/AufgabeFFP7.hs b/AufgabeFFP7.hs index 9337010..8f2a7c8 100644 --- a/AufgabeFFP7.hs +++ b/AufgabeFFP7.hs | |||
| @@ -1,7 +1,9 @@ | |||
| 1 | module AufgabeFFP7 | 1 | module AufgabeFFP7 |
| 2 | where | 2 | where |
| 3 | 3 | ||
| 4 | import List hiding ((\\)) | 4 | import Data.Char |
| 5 | import Data.List hiding ((\\)) | ||
| 6 | import Test.QuickCheck | ||
| 5 | 7 | ||
| 6 | type Buffer = (Int, String) | 8 | type Buffer = (Int, String) |
| 7 | 9 | ||
| @@ -78,18 +80,18 @@ quickSort lst = divideAndConquer indiv solve divide combine lst | |||
| 78 | divide (l:ls) = [[ x | x <- ls, x <= l], [ x | x <- ls, x > l] ] | 80 | divide (l:ls) = [[ x | x <- ls, x <= l], [ x | x <- ls, x > l] ] |
| 79 | combine (l:_) [l1,l2] = l1 ++ [l] ++ l2 | 81 | combine (l:_) [l1,l2] = l1 ++ [l] ++ l2 |
| 80 | 82 | ||
| 81 | removeDuplicates :: [Integer] -> [Integer] | 83 | removeDuplicates :: [Int] -> [Int] |
| 82 | removeDuplicates xs = nub xs | 84 | removeDuplicates xs = nub xs |
| 83 | 85 | ||
| 84 | -- from slide 245 | 86 | -- from slide 245 |
| 85 | ssfn :: [Integer] -> Integer | 87 | ssfn :: [Int] -> Int |
| 86 | ssfn = (sap 0) . removeDuplicates . quickSort | 88 | ssfn xs = sap 0 (removeDuplicates (quickSort xs)) |
| 87 | 89 | ||
| 88 | sap :: Integer -> [Integer] -> Integer | 90 | sap :: Int -> [Int] -> Int |
| 89 | sap n [] = 0 | 91 | sap n [] = n |
| 90 | sap n (x:xs) | 92 | sap n (x:xs) |
| 91 | | n /= x = n | 93 | | n /= x = n |
| 92 | | otherwise = sap (n+1) xs | 94 | | otherwise = sap (n + 1) xs |
| 93 | 95 | ||
| 94 | -- from slide 247 | 96 | -- from slide 247 |
| 95 | (\\) :: Eq a => [a] -> [a] -> [a] | 97 | (\\) :: Eq a => [a] -> [a] -> [a] |
| @@ -102,7 +104,12 @@ minfree xs = head ([0..] \\ xs) | |||
| 102 | 104 | ||
| 103 | type Nat = [Int] | 105 | type Nat = [Int] |
| 104 | 106 | ||
| 105 | --TODO prop_ssfn_eq_minfree_a :: Nat -> Bool | 107 | prop_ssfn_eq_minfree_a :: Nat -> Bool |
| 108 | prop_ssfn_eq_minfree_a xs = minfree pos == ssfn pos | ||
| 109 | where | ||
| 110 | pos = filter (>= 0) xs | ||
| 106 | 111 | ||
| 107 | --TODO prop_ssfn_eq_minfree_b :: Nat -> Property | 112 | prop_ssfn_eq_minfree_b :: Nat -> Property |
| 113 | prop_ssfn_eq_minfree_b xs = filter (< 0) xs == [] | ||
| 114 | ==> ssfn xs == minfree xs | ||
| 108 | 115 | ||
