euler/Problem033.hs

31 lines
904 B
Haskell

-- The fraction 49/98 is a curious fraction, as an inexperienced mathematician
-- in attempting to simplify it may incorrectly believe that 49/98 = 4/8, which
-- is correct, is obtained by cancelling the 9s.
--
-- We shall consider fractions like, 30/50 = 3/5, to be trivial examples.
--
-- There are exactly four non-trivial examples of this type of fraction, less
-- than one in value, and containing two digits in the numerator and
-- denominator.
--
-- If the product of these four fractions is given in its lowest common terms,
-- find the value of the denominator.
import Euler
main = print $ denominator $ product $
[ n
| a <- [1..9]
, b <- [1..9]
, c <- [1..9]
, d <- [1..9]
, let x = 10 * a + b
, let y = 10 * c + d
, let n = x % y
, n < 1
, (a == c && b % d == n) ||
(a == d && b % c == n) ||
(b == c && a % d == n) ||
(b == d && a % c == n)
]