Created
October 1, 2010 05:34
-
-
Save oskimura/605792 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module Euler18 where | |
import Data.Map hiding (map) | |
import Data.List (scanr) | |
lst :: [[Integer]] | |
lst = [ | |
[75] | |
, [95,64] | |
, [17,47,82] | |
, [18,35,87,10] | |
, [20,04,82,47,65] | |
, [19,01,23,75,03,34] | |
, [88,02,77,73,07,63,67] | |
, [99,65,04,28,06,16,70,92] | |
, [41,41,26,56,83,40,80,70,33] | |
, [41,48,72,33,47,32,37,16,94,29] | |
, [53,71,44,65,25,43,91,52,97,51,14] | |
, [70,11,33,28,77,73,17,78,39,68,17,57] | |
, [91,71,52,38,17,14,91,43,58,50,27,29,48] | |
, [63,66,04,68,89,53,67,30,73,16,69,87,40,31] | |
, [04,62,98,27,23,09,70,98,73,93,38,53,60,04,23] | |
] | |
table = fromList $ lst2 | |
where | |
lst2 = concat $ map (\x-> zipWith (\a b ->((fromIntegral (length x) , a),b)) [1..] x) lst | |
euler18 = foldr1 max (f 1 1 0) | |
where | |
bound = 15 | |
f n m s | |
| n == bound = [sum'] | |
| otherwise = (f (n+1) m sum') | |
++ (f (n+1) (m+1) sum') | |
where | |
sum' = table!(n,m) + s | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
これって結局二分木の探索みたいな感じだた