Suppose you had given
four numbers, you need to find how many of them are equal.
For example,
10 10 10 10 : 4 are
equal
10 10 10 30 : 3 are
equal
10 10 20 30 : 2 are
equal
10 20 30 40: 0 are
equal
Sample.hs
import Prelude hiding(max) max :: Int -> Int -> Int max x y = if (x >= y) then x else y howManyEqualIn3 :: Int -> Int -> Int -> Int howManyEqualIn3 x y z | (x == y) && (x == z) = 3 | (x == y) || (x == z) || (y == z) = 2 | otherwise = 0 howManyEqualIn4 :: Int -> Int -> Int -> Int -> Int howManyEqualIn4 w x y z | (w == x) && (w == y) && (w == z) = 4 | otherwise = ((howManyEqualIn3 w x y) `max` (howManyEqualIn3 x y z)) `max` (howManyEqualIn3 w y z)
Prelude> :load Sample.hs [1 of 1] Compiling Main ( Sample.hs, interpreted ) Ok, modules loaded: Main. *Main> *Main> howManyEqualIn4 10 10 10 10 4 *Main> howManyEqualIn4 10 10 10 30 3 *Main> howManyEqualIn4 10 10 20 30 2 *Main> howManyEqualIn4 10 20 30 40 0 *Main> howManyEqualIn4 10 20 30 10 2 *Main> howManyEqualIn4 10 20 20 10 2 *Main> howManyEqualIn4 10 20 20 20 3 *Main> howManyEqualIn4 20 20 20 20 4 *Main>
No comments:
Post a Comment