Euler's sum of powers conjecture: Difference between revisions

Content added Content deleted
Line 1,729: Line 1,729:
------------- EULER'S SUM OF POWERS CONJECTURE -----------
------------- EULER'S SUM OF POWERS CONJECTURE -----------


counterExample :: M.Map Int (Int, Int) -> M.Map Int Int -> Maybe (Int, Int)
counterExample ::
(M.Map Int (Int, Int), M.Map Int Int) -> Maybe (Int, Int)
counterExample sumMap powerMap =
counterExample (sumMap, powerMap) =
find
find
(\(p, s) -> M.member (p - s) sumMap)
(\(p, s) -> M.member (p - s) sumMap)
Line 1,752: Line 1,753:
main = do
main = do
let xs = [1 .. 249]
let xs = [1 .. 249]
(sumMap, powerMap) = ((,) . sumMapForRange <*> powerMapForRange) xs
sumsAndPowers = ((,) . sumMapForRange <*> powerMapForRange) xs
putStrLn $
putStrLn $
"Euler's sum of powers conjecture – " <>
"Euler's sum of powers conjecture – " <>
maybe
maybe
("no counter-example found in the range " <> rangeString xs)
("no counter-example found in the range " <> rangeString xs)
(showExample sumMap powerMap xs)
(showExample sumsAndPowers xs)
(counterExample sumMap powerMap)
(counterExample sumsAndPowers)


showExample ::
showExample ::
M.Map Int (Int, Int) -> M.Map Int Int ->
(M.Map Int (Int, Int), M.Map Int Int) -> [Int] -> (Int, Int) -> String
showExample (sumMap, powerMap) xs (p, s) =
[Int] -> (Int, Int) -> String
showExample sumMap powerMap xs (p, s) =
"a counter-example in range " <> rangeString xs <> ":\n\n" <>
"a counter-example in range " <> rangeString xs <> ":\n\n" <>
intercalate "^5 + " (show <$> [a, b, c, d]) <>
intercalate "^5 + " (show <$> [a, b, c, d]) <>