From 74f118d11c235ccb7cdece8be7d5df990501bc03 Mon Sep 17 00:00:00 2001 From: Oliver Hofmann Date: Wed, 2 Apr 2025 11:13:30 +0200 Subject: [PATCH] succ / pred --- .idea/AlgoDatSoSe25.iml | 2 +- praktika/01_max_folge/algorithms.py | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.idea/AlgoDatSoSe25.iml b/.idea/AlgoDatSoSe25.iml index bf024fa..982282a 100644 --- a/.idea/AlgoDatSoSe25.iml +++ b/.idea/AlgoDatSoSe25.iml @@ -5,7 +5,7 @@ - + \ No newline at end of file diff --git a/praktika/01_max_folge/algorithms.py b/praktika/01_max_folge/algorithms.py index 5bb3c9d..f5f3ab9 100644 --- a/praktika/01_max_folge/algorithms.py +++ b/praktika/01_max_folge/algorithms.py @@ -42,12 +42,12 @@ def max_sequence_3(z: MemoryArray, l = None, r = None): if l is None: l = Literal(0) if r is None: - r = Literal(len(z)-1) + r = z.length().pred() if l == r: return z[l], l, r m = Literal((int(l) + int(r)) // 2) lm, ll, lr = max_sequence_3(z, l, m) - rm, rl, rr = max_sequence_3(z, Literal(int(m) + 1), r) + rm, rl, rr = max_sequence_3(z, m.succ(), r) zm, zl, zr = find_between(z, l, m, r) if lm >= rm and lm >= zm: return lm, ll, lr @@ -59,7 +59,7 @@ def find_between(z: MemoryArray, l, m, r): max_sum = MemoryCell(MIN_VALUE) s = MemoryCell(0) border = MemoryCell() - for i in mrange(m, int(l)-1, -1): + for i in mrange(m, l.pred(), -1): s += z[i] if s > max_sum: max_sum.set(s) @@ -68,7 +68,7 @@ def find_between(z: MemoryArray, l, m, r): left_border = Literal(border) max_sum = MemoryCell(MIN_VALUE) s.set(0) - for i in mrange(int(m) + 1, int(r)+1): + for i in mrange(m.succ(), r.succ()): s += z[i] if s > max_sum: max_sum.set(s) @@ -91,7 +91,7 @@ def max_sequence_4(z: MemoryArray): r.set(i) if curr_sum < Literal(0): curr_sum.set(0) - curr_left.set(int(i) + 1) + curr_left.set(i.succ()) return max_sum, l, r def example(max_sequence_func):