diff options
| author | totycro <totycro@unknown-horizons.org> | 2012-04-23 20:45:20 +0200 |
|---|---|---|
| committer | totycro <totycro@unknown-horizons.org> | 2012-04-23 20:45:20 +0200 |
| commit | db406f6812171d6f9ed6049779d0cbde7072caf2 (patch) | |
| tree | 15ed41dd2b6ff56c089d0c28dfbe1e45b0e8dd25 /AufgabeFFP3.hs | |
| parent | 5a0d54ccd33b1367a74a48145ca0557a076da10c (diff) | |
| download | ffp-db406f6812171d6f9ed6049779d0cbde7072caf2.tar.gz ffp-db406f6812171d6f9ed6049779d0cbde7072caf2.tar.bz2 ffp-db406f6812171d6f9ed6049779d0cbde7072caf2.zip | |
zweiter teil des 3. blattes
Diffstat (limited to 'AufgabeFFP3.hs')
| -rw-r--r-- | AufgabeFFP3.hs | 27 |
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 | ||
| 74 | pd :: [[Integer]] | ||
| 75 | pd = [[1]] ++ (zipWith (\x y -> zipWith (+) ([0] ++ x) (y ++ [0])) pd pd) | ||
| 76 | |||
| 77 | -- naive | ||
| 78 | binom :: (Integer, Integer) -> Integer | ||
| 79 | binom (n, k) | ||
| 80 | | k == 0 || n == k = 1 | ||
| 81 | | otherwise = binom (n-1, k-1) + binom (n-1, k) | ||
| 82 | |||
| 83 | -- stream using pascal | ||
| 84 | binomS :: (Integer, Integer) -> Integer | ||
| 85 | binomS (n, k) = pd !! fromInteger n !! fromInteger k | ||
| 86 | |||
| 87 | -- calc table | ||
| 88 | binomMemoTable :: [[Integer]] | ||
| 89 | binomMemoTable = [ [ binomM (n, k) | k <- [0..] ] | n <- [0..] ] | ||
| 90 | |||
| 91 | -- using memoisation | ||
| 92 | -- base case or recursion formula using lookup table | ||
| 93 | binomM :: (Integer, Integer) -> Integer | ||
| 94 | binomM (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 | |||
