Euler's sum of powers conjecture: Difference between revisions
Content added Content deleted
m (→lightning-fast computation: added CPU timings for a fast PC.) |
m (→{{header|Haskell}}: Tidying.) |
||
Line 1,725: | Line 1,725: | ||
import Data.List (find, intercalate) |
import Data.List (find, intercalate) |
||
import Data.Maybe (maybe) |
import Data.Maybe (maybe) |
||
------------- 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 = |
||
Line 1,744: | Line 1,746: | ||
powerMapForRange :: [Int] -> M.Map Int Int |
powerMapForRange :: [Int] -> M.Map Int Int |
||
powerMapForRange = M.fromList . (zip =<< fmap (^ 5)) |
powerMapForRange = M.fromList . (zip =<< fmap (^ 5)) |
||
--------------------------- TEST ------------------------- |
--------------------------- TEST ------------------------- |
||
Line 1,749: | Line 1,752: | ||
main = do |
main = do |
||
let xs = [1 .. 249] |
let xs = [1 .. 249] |
||
sumMap = sumMapForRange xs |
(sumMap, powerMap) = ((,) . sumMapForRange <*> powerMapForRange) xs |
||
powerMap = powerMapForRange xs |
|||
putStrLn $ |
putStrLn $ |
||
"Euler's sum of powers conjecture – " <> |
"Euler's sum of powers conjecture – " <> |
||
Line 1,758: | Line 1,760: | ||
(counterExample sumMap powerMap) |
(counterExample sumMap powerMap) |
||
showExample :: |
|||
M.Map Int (Int, Int) -> M.Map Int Int -> |
|||
[Int] -> (Int, Int) -> String |
|||
showExample sumMap powerMap xs (p, s) = |
showExample sumMap powerMap xs (p, s) = |
||
"a counter-example in range " <> rangeString xs <> ":\n\n" <> |
"a counter-example in range " <> rangeString xs <> ":\n\n" <> |