RosettaCodeData/Task/Maximum-triangle-path-sum/AutoHotkey/maximum-triangle-path-sum-2...

40 lines
1.0 KiB
AutoHotkey

data :=[
(join ltrim
55,
94,48,
95,30,96,
77,71,26,67,
97,13,76,38,45,
07,36,79,16,37,68,
48,07,09,18,70,26,06,
18,72,79,46,59,79,29,90,
20,76,87,11,32,07,07,49,18,
27,83,58,35,71,11,25,57,29,85,
14,64,36,96,27,11,58,56,92,18,55,
02,90,03,60,48,49,41,46,33,36,47,23,
92,50,48,02,36,59,42,79,72,20,82,77,42,
56,78,38,80,39,75,02,71,66,66,01,03,55,72,
44,25,67,84,71,67,11,61,40,57,58,89,40,56,36,
85,32,25,85,57,48,84,35,47,62,17,01,01,99,89,52,
06,71,28,75,94,48,37,10,23,51,06,48,53,18,74,98,15,
27,02,92,23,08,71,76,84,15,52,92,63,81,10,44,10,69,93
)]
i := data.MaxIndex()
row := Ceil((Sqrt(8*i+1) - 1) / 2)
path:=[]
loop % row {
path[i] := data[i]
i--
}
while i {
row := Ceil((Sqrt(8*i+1) - 1) / 2)
path[i] := data[i] "+" (data[i+row] > data[i+row+1] ? path[i+row] : path[i+row+1])
data[i] += data[i+row] > data[i+row+1] ? data[i+row] : data[i+row+1]
i --
}
MsgBox % data[1] "`n" path[1]