From e31b25846cdf0f2df370add9b297fe8d0cc31bae Mon Sep 17 00:00:00 2001 From: Daniele Fucini Date: Fri, 22 Nov 2024 21:44:05 +0100 Subject: [PATCH] Add Haskell solution for Problem 36 --- Haskell/p036.hs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 Haskell/p036.hs diff --git a/Haskell/p036.hs b/Haskell/p036.hs new file mode 100644 index 0000000..e7a50d5 --- /dev/null +++ b/Haskell/p036.hs @@ -0,0 +1,18 @@ +-- The decimal number, 585 = 1001001001_2 (binary), is palindromic in both bases. +-- +-- Find the sum of all numbers, less than one million, which are palindromic in base 10 and base 2. +-- +-- (Please note that the palindromic number, in either base, may not include leading zeros.) + +toBinary :: Int -> [Int] +toBinary 0 = [] +toBinary 1 = [1] +toBinary n = toBinary (n `div` 2) ++ [n `mod` 2] + +doublePalindrome :: Int -> Bool +doublePalindrome n = show n == reverse (show n) && toBinary n == reverse (toBinary n) + +main = do + let result = sum $ filter doublePalindrome [1..999999] + putStrLn $ "Project Euler, Problem 36\n" + ++ "Answer: " ++ show result