Merge remote-tracking branch 'origin/main'

This commit is contained in:
Oliver Hofmann 2025-04-08 11:29:46 +02:00
commit 4aeb01c003
2 changed files with 6 additions and 6 deletions

View File

@ -5,7 +5,7 @@
<excludeFolder url="file://$MODULE_DIR$/.venv" /> <excludeFolder url="file://$MODULE_DIR$/.venv" />
<excludeFolder url="file://$MODULE_DIR$/venv" /> <excludeFolder url="file://$MODULE_DIR$/venv" />
</content> </content>
<orderEntry type="jdk" jdkName="Python 3.12 (AlgoDatSoSe25)" jdkType="Python SDK" /> <orderEntry type="jdk" jdkName="Python 3.12 (SoSe25)" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
</component> </component>
</module> </module>

View File

@ -42,12 +42,12 @@ def max_sequence_3(z: MemoryArray, l = None, r = None):
if l is None: if l is None:
l = Literal(0) l = Literal(0)
if r is None: if r is None:
r = Literal(len(z)-1) r = z.length().pred()
if l == r: if l == r:
return z[l], l, r return z[l], l, r
m = Literal((int(l) + int(r)) // 2) m = Literal((int(l) + int(r)) // 2)
lm, ll, lr = max_sequence_3(z, l, m) 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) zm, zl, zr = find_between(z, l, m, r)
if lm >= rm and lm >= zm: if lm >= rm and lm >= zm:
return lm, ll, lr return lm, ll, lr
@ -59,7 +59,7 @@ def find_between(z: MemoryArray, l, m, r):
max_sum = MemoryCell(MIN_VALUE) max_sum = MemoryCell(MIN_VALUE)
s = MemoryCell(0) s = MemoryCell(0)
border = MemoryCell() border = MemoryCell()
for i in mrange(m, int(l)-1, -1): for i in mrange(m, l.pred(), -1):
s += z[i] s += z[i]
if s > max_sum: if s > max_sum:
max_sum.set(s) max_sum.set(s)
@ -68,7 +68,7 @@ def find_between(z: MemoryArray, l, m, r):
left_border = Literal(border) left_border = Literal(border)
max_sum = MemoryCell(MIN_VALUE) max_sum = MemoryCell(MIN_VALUE)
s.set(0) s.set(0)
for i in mrange(int(m) + 1, int(r)+1): for i in mrange(m.succ(), r.succ()):
s += z[i] s += z[i]
if s > max_sum: if s > max_sum:
max_sum.set(s) max_sum.set(s)
@ -91,7 +91,7 @@ def max_sequence_4(z: MemoryArray):
r.set(i) r.set(i)
if curr_sum < Literal(0): if curr_sum < Literal(0):
curr_sum.set(0) curr_sum.set(0)
curr_left.set(int(i) + 1) curr_left.set(i.succ())
return max_sum, l, r return max_sum, l, r
def example(max_sequence_func): def example(max_sequence_func):