summaryrefslogtreecommitdiffstats
path: root/AufgabeFFP3.hs
diff options
context:
space:
mode:
authortotycro <totycro@unknown-horizons.org>2012-04-23 20:45:20 +0200
committertotycro <totycro@unknown-horizons.org>2012-04-23 20:45:20 +0200
commitdb406f6812171d6f9ed6049779d0cbde7072caf2 (patch)
tree15ed41dd2b6ff56c089d0c28dfbe1e45b0e8dd25 /AufgabeFFP3.hs
parent5a0d54ccd33b1367a74a48145ca0557a076da10c (diff)
downloadffp-db406f6812171d6f9ed6049779d0cbde7072caf2.tar.gz
ffp-db406f6812171d6f9ed6049779d0cbde7072caf2.tar.bz2
ffp-db406f6812171d6f9ed6049779d0cbde7072caf2.zip
zweiter teil des 3. blattes
Diffstat (limited to 'AufgabeFFP3.hs')
-rw-r--r--AufgabeFFP3.hs27
1 files changed, 27 insertions, 0 deletions
diff --git a/AufgabeFFP3.hs b/AufgabeFFP3.hs
index 67519be..459f510 100644
--- a/AufgabeFFP3.hs
+++ b/AufgabeFFP3.hs
@@ -69,3 +69,30 @@ selector2 l = [ x | x <- best, getWeight x == min ]
69 min = minimum $ map getWeight best 69 min = minimum $ map getWeight best
70 best = selector l 70 best = selector l
71 71
72
73-- pascal's triangle from exercise 1
74pd :: [[Integer]]
75pd = [[1]] ++ (zipWith (\x y -> zipWith (+) ([0] ++ x) (y ++ [0])) pd pd)
76
77-- naive
78binom :: (Integer, Integer) -> Integer
79binom (n, k)
80 | k == 0 || n == k = 1
81 | otherwise = binom (n-1, k-1) + binom (n-1, k)
82
83-- stream using pascal
84binomS :: (Integer, Integer) -> Integer
85binomS (n, k) = pd !! fromInteger n !! fromInteger k
86
87-- calc table
88binomMemoTable :: [[Integer]]
89binomMemoTable = [ [ binomM (n, k) | k <- [0..] ] | n <- [0..] ]
90
91-- using memoisation
92-- base case or recursion formula using lookup table
93binomM :: (Integer, Integer) -> Integer
94binomM (n, k)
95 | k == 0 || n == k = 1
96 | otherwise = get (n-1) (k-1) + get (n-1) (k)
97 where get n k = binomMemoTable !! fromInteger n !! fromInteger k
98