1
0
Fork 0

Question 18

main
Bill Ewanick 2023-10-20 12:30:57 -04:00
parent 224c8cf70c
commit 03276cd8c5
1 changed files with 50 additions and 0 deletions

View File

@ -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