Implement a tribonacci sequence
This commit is contained in:
parent
bfe5475ca6
commit
93cca003c9
1 changed files with 45 additions and 0 deletions
|
@ -92,3 +92,48 @@ sieveC pred xs = realSieve id xs
|
||||||
-- >>> (\ n -> sieve (\ x -> \ y -> (y `mod` x) > 0) [2..n]) 100
|
-- >>> (\ n -> sieve (\ x -> \ y -> (y `mod` x) > 0) [2..n]) 100
|
||||||
-- [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97]
|
-- [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97]
|
||||||
--
|
--
|
||||||
|
|
||||||
|
--------------------
|
||||||
|
-- Exercise 4
|
||||||
|
--------------------
|
||||||
|
data Tree a = Tree a [Tree a]
|
||||||
|
depth :: Tree a -> Integer
|
||||||
|
|
||||||
|
-- depth (Tree _ subtrees) =
|
||||||
|
-- 1 + (maximum $ 0 : (map depth subtrees))
|
||||||
|
depth tree = realDepth [tree] 0
|
||||||
|
where
|
||||||
|
realDepth [] x = x
|
||||||
|
realDepth trees x = realDepth (concatMap (\ (Tree _ subtrees) -> subtrees) trees) (x + 1)
|
||||||
|
|
||||||
|
-- >>> depth (Tree 1 [Tree 1 []])
|
||||||
|
-- 2
|
||||||
|
--
|
||||||
|
|
||||||
|
-- Notes
|
||||||
|
-- realDepth [(Tree 1 [Tree 1 []])] 0
|
||||||
|
-- realDepth (concatMap (\ (Tree _ subtrees) -> subtrees) [Tree 1 [Tree 1 []]]) (0 + 1)
|
||||||
|
-- realDepth [Tree 1 []] 1
|
||||||
|
-- realDepth (concatMap (\ (Tree _ subtrees) -> subtrees) [Tree 1 []]) ((0 + 1) + 1)
|
||||||
|
-- realDepth [] 2
|
||||||
|
-- 2
|
||||||
|
|
||||||
|
fibonacci :: Integer -> Integer
|
||||||
|
fibonacci = fib 0 1
|
||||||
|
where
|
||||||
|
fib acc b 0 = acc
|
||||||
|
fib acc b x = fib b (acc + b) (x - 1)
|
||||||
|
|
||||||
|
-- >>> fibonacci 6
|
||||||
|
-- 8
|
||||||
|
--
|
||||||
|
|
||||||
|
tribonacci :: Integer -> Integer
|
||||||
|
tribonacci = trib 0 0 1
|
||||||
|
where
|
||||||
|
trib acc b c 0 = acc
|
||||||
|
trib acc b c x = trib b c (acc + b + c) (x - 1)
|
||||||
|
|
||||||
|
-- >>> tribonacci 7
|
||||||
|
-- 13
|
||||||
|
--
|
||||||
|
|
Loading…
Reference in a new issue