-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathfactorial.py
More file actions
11 lines (8 loc) · 3.14 KB
/
factorial.py
File metadata and controls
11 lines (8 loc) · 3.14 KB
1
2
3
4
5
6
7
8
9
10
11
from sage import *
import random
program = [Function(0, [MoveRight(3), Dereference(), MoveRight(1), Where(), MoveLeft(1), Reference(), MoveLeft(3), MoveRight(3), Save(), MoveLeft(3), MoveRight(2), Restore(), MoveLeft(2), MoveRight(3), Dereference(), Save(), Reference(), MoveLeft(3), Restore(), MoveRight(2), Save(), MoveLeft(2), MoveRight(2), Dereference(), Restore(), Reference(), MoveLeft(2), Dereference(), MoveRight(1), Save(), MoveLeft(1), Reference(), Dereference(), MoveRight(1), Where(), Reference(), Save(), Dereference(), Restore(), Reference(), MoveRight(4), Save(), MoveLeft(4), Dereference(), MoveLeft(1), Where(), MoveRight(1), Reference(), Save(), MoveRight(4), Restore(), MoveLeft(4), IfElse([MoveRight(2), Dereference(), Restore(), Reference(), MoveLeft(2), Dereference(), MoveRight(1), Save(), MoveLeft(1), Reference(), Dereference(), MoveRight(1), Where(), MoveLeft(1), Reference(), Save(), MoveRight(2), Dereference(), Restore(), Reference(), MoveLeft(2), Dereference(), MoveRight(1), Save(), MoveLeft(1), Reference(), Dereference(), MoveRight(1), Where(), MoveLeft(1), Reference(), Save(), Dereference(), MoveRight(1), Where(), MoveLeft(1), Reference(), Save(), SetRegister(1), Dereference(), Save(), Reference(), Dereference(), MoveLeft(1), Restore(), MoveRight(1), Reference(), Dereference(), Subtract(), Reference(), Dereference(), MoveLeft(1), Save(), MoveRight(1), Reference(), Dereference(), MoveLeft(1), Where(), MoveRight(1), Reference(), Save(), SetRegister(0), MoveRight(4), Save(), MoveLeft(4), MoveRight(4), Restore(), MoveLeft(4), Dereference(), MoveRight(1), Save(), MoveLeft(1), Reference(), Dereference(), MoveRight(1), Where(), MoveLeft(1), Reference(), Save(), Dereference(), Restore(), Reference(), MoveRight(4), Save(), MoveLeft(4), Dereference(), MoveLeft(1), Where(), MoveRight(1), Reference(), Save(), MoveRight(4), Restore(), MoveLeft(4), Call(), Dereference(), MoveLeft(1), Restore(), MoveRight(1), Reference(), Dereference(), Multiply(), Reference(), Dereference(), MoveLeft(1), Save(), MoveRight(1), Reference(), Dereference(), MoveLeft(1), Where(), MoveRight(1), Reference(), Save()], [Dereference(), MoveRight(1), Where(), MoveLeft(1), Reference(), Save(), SetRegister(1), Dereference(), Save(), Reference()]), Dereference(), Restore(), Reference(), MoveRight(2), Dereference(), Save(), Reference(), MoveLeft(2), Dereference(), MoveLeft(1), Where(), MoveRight(1), Reference(), Save(), MoveRight(3), Dereference(), Restore(), Reference(), MoveLeft(3), MoveRight(2), Save(), MoveLeft(2), MoveRight(3), Dereference(), MoveLeft(1), Where(), MoveRight(1), Reference(), MoveLeft(3), MoveRight(3), Save(), MoveLeft(3)]), Allocate(), MoveRight(3), Save(), MoveRight(2048), GetInt(), Save(), MoveRight(4), MoveLeft(4), MoveRight(4), MoveLeft(4), Dereference(), Reference(), MoveRight(1), Where(), Reference(), Save(), MoveRight(4), MoveLeft(4), Dereference(), MoveLeft(1), Where(), Reference(), Save(), MoveRight(4), Restore(), Dereference(), Call(), Dereference(), Restore(), PutInt()]
number = input('Enter a number: ')
tm = SageVirtualMachine(program, [int(number)])
tape = Tape()
tm.run(tape, 10000000000000000000)
print(f'Factorial of {number} is {tm.output[0]}')