31 lines
795 B
Text
31 lines
795 B
Text
[ stack ] is maxseq ( --> s )
|
|
[ stack ] is maxsum ( --> s )
|
|
|
|
[ [] maxseq put
|
|
0 maxsum put
|
|
dup dup size times
|
|
[ [] 0 rot
|
|
witheach
|
|
[ rot over join
|
|
unrot +
|
|
dup maxsum share >
|
|
if
|
|
[ dup maxsum replace
|
|
over maxseq replace ] ]
|
|
2drop behead drop dup ]
|
|
2drop
|
|
maxsum take
|
|
maxseq take ] is maxsubseqsum ( [ --> n [ )
|
|
|
|
|
|
' [ [ 1 2 3 4 5 -8 -9 -20 40 25 -5 ]
|
|
[ -1 -2 3 5 6 -2 -1 4 -4 2 -1 ]
|
|
[ -1 -2 -3 -4 -5 ]
|
|
[ ] ]
|
|
witheach
|
|
[ dup
|
|
say "Sequence: " echo cr
|
|
maxsubseqsum
|
|
say "Subsequence: " echo cr
|
|
say "Sum: " echo cr
|
|
cr ]
|