RosettaCodeData/Task/Greatest-subsequential-sum/Wren/greatest-subsequential-sum.wren
2023-07-01 13:44:08 -04:00

36 lines
740 B
Text

var gss = Fn.new { |s|
var best = 0
var start = 0
var end = 0
var sum = 0
var sumStart = 0
var i = 0
for (x in s) {
sum = sum + x
if (sum > best) {
best = sum
start = sumStart
end = i + 1
} else if (sum < 0) {
sum = 0
sumStart = i + 1
}
i = i + 1
}
return [s[start...end], best]
}
var tests = [
[-1, -2, 3, 5, 6, -2, -1, 4, -4, 2, -1],
[-1, 1, 2, -5, -6],
[],
[-1, -2, -1]
]
for (test in tests) {
System.print("Input: %(test)")
var res = gss.call(test)
var subSeq = res[0]
var sum = res[1]
System.print("Sub seq: %(subSeq)")
System.print("Sum: %(sum)\n")
}