Compare commits
2 Commits
08a37af729
...
03276cd8c5
Author | SHA1 | Date |
---|---|---|
Bill Ewanick | 03276cd8c5 | |
Bill Ewanick | 224c8cf70c |
|
@ -0,0 +1,50 @@
|
|||
import Debug.Trace (trace)
|
||||
small :: [[Integer]]
|
||||
small = [
|
||||
[3],
|
||||
[7,4],
|
||||
[2,4,6],
|
||||
[1000,5,9,3]
|
||||
]
|
||||
|
||||
triangle :: [[Integer]]
|
||||
triangle = [
|
||||
[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]
|
||||
]
|
||||
|
||||
maxPath t i j = (t !! i !! j) +
|
||||
(if i + 1 < length t
|
||||
then max (maxPath t (i + 1) j) (maxPath t (i + 1) (j + 1))
|
||||
else 0)
|
||||
|
||||
-- This max path doesn't consider the entire path,
|
||||
-- it only considers the two numbers directly below the index
|
||||
newMaxPath t i j = (t !! i !! j) +
|
||||
(if i + 1 < length t
|
||||
then newMaxPath t i' j'
|
||||
else 0)
|
||||
where
|
||||
a = t !! i' !! j
|
||||
b = t !! i' !! (j+1)
|
||||
i' = i+1
|
||||
j' = trace (show a) $ if a > b then j else j+1
|
||||
|
||||
main :: IO ()
|
||||
main = print ans
|
||||
|
||||
ans :: Integer
|
||||
ans = maxPath small 0 0
|
|
@ -17,9 +17,9 @@ threeDigitProducts = [ n*m | n <- [100..999], m <- [n..999] ]
|
|||
isPalindrome :: Integer -> Bool
|
||||
isPalindrome n = all (== True) $ zipWith (==) half half'
|
||||
where
|
||||
(half, half'') = splitAt h n'
|
||||
(half, half'') = splitAt l n'
|
||||
half' = reverse half''
|
||||
h = length n' `div` 2
|
||||
l = length n' `div` 2
|
||||
n' = show n
|
||||
-- n' = trace (show n) $ show n
|
||||
|
||||
|
|
Loading…
Reference in New Issue