summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--AufgabeFFP7.hs25
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 @@
1module AufgabeFFP7 1module AufgabeFFP7
2where 2where
3 3
4import List hiding ((\\)) 4import Data.Char
5import Data.List hiding ((\\))
6import Test.QuickCheck
5 7
6type Buffer = (Int, String) 8type 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
81removeDuplicates :: [Integer] -> [Integer] 83removeDuplicates :: [Int] -> [Int]
82removeDuplicates xs = nub xs 84removeDuplicates xs = nub xs
83 85
84-- from slide 245 86-- from slide 245
85ssfn :: [Integer] -> Integer 87ssfn :: [Int] -> Int
86ssfn = (sap 0) . removeDuplicates . quickSort 88ssfn xs = sap 0 (removeDuplicates (quickSort xs))
87 89
88sap :: Integer -> [Integer] -> Integer 90sap :: Int -> [Int] -> Int
89sap n [] = 0 91sap n [] = n
90sap n (x:xs) 92sap 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
103type Nat = [Int] 105type Nat = [Int]
104 106
105--TODO prop_ssfn_eq_minfree_a :: Nat -> Bool 107prop_ssfn_eq_minfree_a :: Nat -> Bool
108prop_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 112prop_ssfn_eq_minfree_b :: Nat -> Property
113prop_ssfn_eq_minfree_b xs = filter (< 0) xs == []
114 ==> ssfn xs == minfree xs
108 115