Finish ggt task
This commit is contained in:
@@ -1,57 +1,67 @@
|
||||
from MaMaGUI import MaMaGUI
|
||||
from MaMaMa import MaMaMa
|
||||
from MaMa import MaMa
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Algor
|
||||
prog = [
|
||||
'cequal(26)',
|
||||
'cleqR(11)',
|
||||
'csub(-1,0,-1)',
|
||||
'ldo(-1)',
|
||||
'ldo(-1)',
|
||||
'equal(25)',
|
||||
'ldo(0)',
|
||||
'ldo(-2)',
|
||||
'leq(11)',
|
||||
'ldo(0)',
|
||||
'ldo(-2)',
|
||||
'sub',
|
||||
'sto(-1)',
|
||||
'ujp(15)',
|
||||
'csub(0,-1,0)',
|
||||
'nzero(-1,3)',
|
||||
'swp',
|
||||
'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'
|
||||
]
|
||||
|
||||
# Create and execute MaMa instance
|
||||
machine = MaMaMa(prog, [1, 1, 1, 4, 6])
|
||||
# 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)
|
||||
]
|
||||
|
||||
machine.add_macro('nzero', [
|
||||
'ldo(n)',
|
||||
'ldo(0)',
|
||||
'sub',
|
||||
'push(0)',
|
||||
'equal(p)'
|
||||
], ['n', 'p'])
|
||||
# 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.")
|
||||
|
||||
machine.add_macro('cequal', [
|
||||
'ldo(-1)',
|
||||
'ldo(-1)',
|
||||
'equal(p)'
|
||||
], ["p"])
|
||||
|
||||
machine.add_macro('cleqR', [
|
||||
'ldo(0)',
|
||||
'ldo(-2)',
|
||||
'leq(p)'
|
||||
], ['p'])
|
||||
|
||||
machine.add_macro('csub', [
|
||||
'ldo(n)',
|
||||
'ldo(m-1)',
|
||||
'sub',
|
||||
'sto(s-1)'
|
||||
], ['n', 'm', 's'])
|
||||
|
||||
machine.add_macro('swp', [
|
||||
'ldo(-1)',
|
||||
'ldo(-1)',
|
||||
'sto(-2)',
|
||||
'sto(-1)',
|
||||
])
|
||||
# Load machine
|
||||
machine = MaMa(prog, [4,6])
|
||||
|
||||
# Visualize finished execution using journal
|
||||
gui = MaMaGUI(machine)
|
||||
|
||||
Reference in New Issue
Block a user