diff --git a/60 b/60 new file mode 100755 index 0000000..81226b0 Binary files /dev/null and b/60 differ diff --git a/60.hi b/60.hi new file mode 100644 index 0000000..f27cf16 Binary files /dev/null and b/60.hi differ diff --git a/60.hs b/60.hs new file mode 100644 index 0000000..c322f6c --- /dev/null +++ b/60.hs @@ -0,0 +1,43 @@ +import Data.List + +upper = 10000 + +isPrime :: Integer -> Bool +isPrime x = null [k | k <- [2..x-1], k * k <= x, x `mod` k == 0] + +primes = [x | x <- [2..upper], isPrime x] + +isPrimeNew :: Integer -> Bool +isPrimeNew x + | x <= upper = elem x primes + | otherwise = isPrime x + +order :: (Integer, Integer, Integer, Integer, Integer) -> (Integer, Integer, Integer, Integer, Integer) -> Ordering +order (a1, b1, c1, d1, e1) (a2, b2, c2, d2, e2) = + compare (a1 + b1 + c1 + d1 + e1) (a2 + b2 + c2 + d2 + e2) + +combosArePrime :: Integer -> Integer -> Integer -> Integer -> Integer -> Bool +combosArePrime a b c d e = + isPrimeNew (read (show a ++ show b)) && + isPrimeNew (read (show b ++ show a)) && + isPrimeNew (read (show a ++ show c)) && + isPrimeNew (read (show c ++ show a)) && + isPrimeNew (read (show b ++ show c)) && + isPrimeNew (read (show c ++ show b)) && + isPrimeNew (read (show a ++ show d)) && + isPrimeNew (read (show d ++ show a)) && + isPrimeNew (read (show b ++ show d)) && + isPrimeNew (read (show d ++ show b)) && + isPrimeNew (read (show c ++ show d)) && + isPrimeNew (read (show a ++ show e)) && + isPrimeNew (read (show e ++ show a)) && + isPrimeNew (read (show b ++ show e)) && + isPrimeNew (read (show e ++ show b)) && + isPrimeNew (read (show c ++ show e)) && + isPrimeNew (read (show d ++ show e)) && + isPrimeNew (read (show e ++ show e)) + +quints = sortBy order [(a, b, c, d, e) | a <- primes, b <- primes, c <- primes, d <- primes, e <- primes, + a < b, b < c, c < d, d < e, combosArePrime a b c d e] + +main = print primes diff --git a/60.o b/60.o new file mode 100644 index 0000000..a986c2f Binary files /dev/null and b/60.o differ