24 lines
923 B
Haskell
24 lines
923 B
Haskell
-- The arithmetic sequence, 1487, 4817, 8147, in which each of the terms
|
|
-- increases by 3330, is unusual in two ways: (i) each of the three terms are
|
|
-- prime, and, (ii) each of the 4-digit numbers are permutations of one
|
|
-- another.
|
|
--
|
|
-- There are no arithmetic sequences made up of three 1-, 2-, or 3-digit
|
|
-- primes, exhibiting this property, but there is one other 4-digit increasing
|
|
-- sequence.
|
|
--
|
|
-- What 12-digit number do you form by concatenating the three terms in this
|
|
-- sequence?
|
|
|
|
import Euler
|
|
|
|
main = print $ head $ do
|
|
p <- takeWhile (<= 9999) $ dropWhile (<= 1487) $ primes
|
|
p' <- takeWhile (<= 9999) $ dropWhile (<= p) $ primes
|
|
let p'' = 2 * p' - p
|
|
guard $ p'' <= 9999
|
|
guard $ p'' `elem` takeWhile (<= p'') primes
|
|
guard $ sort (toDigits p) == sort (toDigits p')
|
|
guard $ sort (toDigits p') == sort (toDigits p'')
|
|
return $ fromDigits $ toDigits p ++ toDigits p' ++ toDigits p''
|