diff --git a/schoeffelbe/pr01.py b/schoeffelbe/pr01.py index 56e8192..a639e3b 100644 --- a/schoeffelbe/pr01.py +++ b/schoeffelbe/pr01.py @@ -101,6 +101,24 @@ def max_sequence_3(z: MemoryArray): rend = Literal(len(z) - 1) return _max_sequence_3(z, lstart, rend) +def max_sequence_4(z: MemoryArray): + n = z.length() + max = MemoryCell(MIN_VALUE) + aktLinks = MemoryCell() + links = MemoryCell() + rechts = MemoryCell() + aktSum = MemoryCell() + for i in mrange(n): + aktSum += z[i] + if aktSum > max: + max.set(aktSum) + links.set(aktLinks) + rechts.set(i) + if aktSum < Literal(0): + aktSum.set(0) + aktLinks.set(MemoryCell(1) + i) + return (max, links, rechts) + def example(max_sequence_func): l = [-59, 52, 46, 14, -50, 58, -87, -77, 34, 15] print(l) @@ -133,7 +151,7 @@ def analyze_complexity(max_sequence_func, sizes): if __name__ == '__main__': - fn = max_sequence_3 + fn = max_sequence_4 example(fn) for filename in ["data/seq0.txt", "data/seq1.txt", "data/seq2.txt"]: print(filename)