28 lines
766 B
Haskell
28 lines
766 B
Haskell
|
import Data.Function
|
||
|
import Data.List
|
||
|
import qualified Data.Set as S
|
||
|
|
||
|
|
||
|
prims = fix (\f (x:xs) -> x:f (filter (\y -> rem y x /= 0) xs)) [2..]
|
||
|
|
||
|
--permu :: Integer -> S.Set Integer
|
||
|
permu :: Integer -> S.Set Integer
|
||
|
permu = S.fromList . map read . permutations . show
|
||
|
|
||
|
|
||
|
primsList = dropWhile (< 1000) $ takeWhile (< 10000) prims
|
||
|
primsSet = S.fromList primsList
|
||
|
|
||
|
candidates :: [[Integer]]
|
||
|
candidates = map (\prim -> S.toList $ S.intersection primsSet (permu prim)) primsList
|
||
|
|
||
|
candidates' = filter (\x -> 3 <= length x) candidates
|
||
|
candidates'' = map sort candidates'
|
||
|
|
||
|
--permu' :: [a] -> [[a]]
|
||
|
permu' [] = []
|
||
|
permu' (x:xs) = [map permu' y | y <- tails xs]
|
||
|
|
||
|
--permu3 xs = filter (\(a:b:c:[]) -> a < b && b < c && b - a == c - b) $ nub $ map (take 3) $ permutations xs
|
||
|
|