RosettaCodeData/Task/Greatest-subsequential-sum/M2000-Interpreter/greatest-subsequential-sum-2.m2000
2025-06-11 20:16:52 -04:00

36 lines
894 B
Text

module Greatest_subsequential_sum (filename) {
showGSS=lambda (a)->{
function Greatest_subsequential_sum(a as array){
var best = 0
var start = 0
var end = 0
var sum = 0
var sumStart = 0
var i = 0
s=each(a)
while s {
sum +=array(s)
if (sum > best) then {
best = sum
start = sumStart
end = i + 1
} else.if (sum < 0) then {
sum = 0
sumStart = i + 1
}
i++
}
=a#slice(start, end-1)
}
= "("+a#str$(",")+") -> ("+ Greatest_subsequential_sum(a)#str$(",")+")"
}
open filename for output as#f
print #f, showGSS((-1 , 2 , -1))
print #f, showGSS((-1, 2, -1, 3, -1))
print #f, showGSS((-1, 1, 2, -5, -6))
print #f, showGSS((-1 , -2 , 3 , 5 , 6 , -2 , -1 , 4 , -4 , 2 , -1))
close #f
if filename<>"" then win notepad, dir$+filename
}
Greatest_subsequential_sum "" ' to screen
Greatest_subsequential_sum "out.txt"