[Haskell-beginners] Project euler question

martin martin.drautzburg at web.de
Thu May 22 06:47:12 UTC 2014


Am 05/21/2014 11:14 PM, schrieb David McBride:
> Err actually I guess I got the euler answer, I guess I don't understand your solution without the "minus" function
> definition.

"minus" is from Data.List.Ordered. It it like the standard set operation "minus" when both lists are ordered.

> 
> 
> On Wed, May 21, 2014 at 5:10 PM, David McBride <toad3k at gmail.com <mailto:toad3k at gmail.com>> wrote:
> 
>     For what it is worth, I'm getting the same answer as you are.
> 
>     > head $ drop (1000000-1) $ sort $ Data.List.permutations [0..9]
>     [2,7,8,3,9,1,5,4,6,0]
> 
>     >(sort $ Data.List.permutations [0..9]) !! (1000000-1)
>      [2,7,8,3,9,1,5,4,6,0]
> 
>     I guess either euler is wrong or we are both crazy.
> 
> 
>     On Wed, May 21, 2014 at 4:09 PM, martin <martin.drautzburg at web.de <mailto:martin.drautzburg at web.de>> wrote:
> 
>         Hello all,
> 
>         I tried to solve Problem 24 (https://projecteuler.net/problem=24) and came up with the following solution:
> 
>         import Data.List.Ordered
>         import Data.Char
> 
>         elems = [0,1,2,3,4,5,6,7,8,9] :: [Int]
> 
>         x = do
>             a <- elems
>             b <- elems `without` [a]
>             c <- elems `without` [a,b]
>             d <- elems `without` [a,b,c]
>             e <- elems `without` [a,b,c,d]
>             f <- elems `without` [a,b,c,d,e]
>             g <- elems `without` [a,b,c,d,e,f]
>             h <- elems `without` [a,b,c,d,e,f,g]
>             i <- elems `without` [a,b,c,d,e,f,g,h]
>             j <- elems `without` [a,b,c,d,e,f,g,h,i]
>             return [a,b,c,d,e,f,g,h,i,j]
> 
>         without a b = minus a ( sort b)
> 
>         solution = filter isDigit $ show $ (x !! 1000001)
>         -- "2783915640"
> 
>         PE tells me that this is wrong, and I peeked the correct answer, which is 2783915460 (the 4 and 6 are swapped). So I
>         tried to find out where the correct answer is in my list x and added
> 
>         y = filter (\(x,y) -> x == "2783915460") $ zip (map (filter isDigit . show) x) [1..]
>         -- [("2783915460",1000000)]
> 
>         How can that be? "solution" tells me that the millionth element is "2783915640" but "y" tells me that
>         "2783915460" is at
>         the millionth position? I just cannot see it.
> 
>         _______________________________________________
>         Beginners mailing list
>         Beginners at haskell.org <mailto:Beginners at haskell.org>
>         http://www.haskell.org/mailman/listinfo/beginners
> 
> 
> 
> 
> 
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners
> 



More information about the Beginners mailing list