Tuesday, September 9, 2008
Sunday, September 7, 2008
You have to pass the current date as the first triple and your birthday as the second one.
age :: (Int,Int,Int) -> (Int,Int,Int) -> Int
age (d, m, y) (d2, m2, y2)
| m > m2 = y - y2
| m == m2 && d >= d2 = y - y2
| otherwise = y - y2 - 1
As promised here is my first code snippet. This code can tell you whatever 3 numbers form a valid triangle or not, and if they do it also tells you what kind of triangle.
max3 , min3, middle :: Int -> Int -> Int -> Int
max3 a b c = max (max a b) c
min3 a b c = min (min a b) c
middle a b c = max (min a b) (min b c)
sort3 :: Int -> Int -> Int -> (Int,Int,Int)
sort3 a b c = ((max3 a b c), (middle a b c), (min3 a b c))
data Triangle = Failure | Isosceles | Equilateral | Scalene
analyse :: (Int,Int,Int) -> Triangle
| a >= b + c = Failure
| b == c = Equilateral
| (a == b) && (b == a) = Isosceles
| otherwise = Scalene
safe_analyse :: Int -> Int -> Int -> Triangle
safe_analyse a b c = analyse (sort3 a b c)
Now I've finally published my first post on this blog and it is nothing more than an announcement for future posts. Right now I'm learning Haskell, a beautiful purely functional language. While I'm working through the book I've purchased I'll publish code snippets here. They might be useful for someone...sometime...somehow...