Files
Jan-Niclas Loosen 5e616dd0a2 Finish homework
2025-10-18 18:52:00 +02:00

80 lines
1.6 KiB
Python

from MaMaGUI import MaMaGUI
from MaMa import MaMa
if __name__ == "__main__":
# Algor
prog = [
'ldo(-1)',
'ldo(-1)',
'equal(25)',
'ldo(0)',
'ldo(-2)',
'leq(11)',
'ldo(0)',
'ldo(-2)',
'sub',
'sto(-1)',
'ujp(15)',
'ldo(-1)',
'ldo(-1)',
'sub',
'sto(-2)',
'ldo(-1)',
'push(0)',
'equal(19)',
'ujp(3)',
'ldo(-1)',
'ldo(-1)',
'sto(-3)',
'sto(-1)',
'pop',
'stop',
'pop',
'stop'
]
# Test cases
tests = [
(4,6,2),
(10,5,5),
(9,3,3),
(21,14,7),
(7,13,1),
(12,18,6),
(25,5,5),
(42,56,14),
(100,80,20),
(81,27,27)
]
# Print restults into console
passed = 0
for a,b,expected in tests:
m = MaMa(prog, [a,b])
m.run()
result = m.stack.get(0)
if result == expected:
print(f"GGT({a},{b}) = {result}")
passed += 1
else:
print(f"GGT({a},{b}) = {result} ✗ expected {expected}")
print(f"{passed}/{len(tests)} tests passed.")
# Load machine
machine = MaMa(prog, [4, 6])
journal = machine.run()
with open("run.txt", "w") as f:
i = 1
for step in journal:
s = step["p_stack"]
p = step["p_prog"]
S = tuple(step["stack"].values())
f.write(f"{i}: ({s},{p},{S})\n")
i += 1
# Visualize finished execution using journal
machine = MaMa(prog, [4, 6])
gui = MaMaGUI(machine)
gui.display()