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 :: Integer -> Bool
|
||||||
isPalindrome n = all (== True) $ zipWith (==) half half'
|
isPalindrome n = all (== True) $ zipWith (==) half half'
|
||||||
where
|
where
|
||||||
(half, half'') = splitAt h n'
|
(half, half'') = splitAt l n'
|
||||||
half' = reverse half''
|
half' = reverse half''
|
||||||
h = length n' `div` 2
|
l = length n' `div` 2
|
||||||
n' = show n
|
n' = show n
|
||||||
-- n' = trace (show n) $ show n
|
-- n' = trace (show n) $ show n
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue