Renumbering/Python Implementation
Jump to navigation
Jump to search
Written in Python 3.
code="""code goes here"""
import sys
code=code.split()
vardict={}
for i in range(len(code)):
for sym in "+-*/%^=IOCG":
if sym in code[i]:
code[i]=code[i].split(sym)
if sym in "+-*/%^=":
assert len(code[i])==2, "Expressions may have only one operation"
if sym in "IOCG":
assert code[i][0]=="",i+" does not use an initial variable"
del code[i][0]
code[i].insert(0,sym)
try:
for num in [1,2]:
s=1
if code[i][num][0]=="_":
s=-1
code[i][num]=code[i][num][1:]
code[i][num]=s*eval(code[i][num])
vardict[code[i][num]]=code[i][num]
except IndexError:
pass
cp=0
while cp<len(code):
if code[cp][0]=="+":vardict[code[cp][1]]+=vardict[code[cp][2]]
if code[cp][0]=="-":vardict[code[cp][1]]-=vardict[code[cp][2]]
if code[cp][0]=="*":vardict[code[cp][1]]*=vardict[code[cp][2]]
if code[cp][0]=="/":vardict[code[cp][1]]/=vardict[code[cp][2]]
if code[cp][0]=="%":vardict[code[cp][1]]%=vardict[code[cp][2]]
if code[cp][0]=="^":vardict[code[cp][1]]**=vardict[code[cp][2]]
if code[cp][0]=="=":vardict[code[cp][1]]=vardict[code[cp][2]]
if code[cp][0]=="I":vardict[code[cp][1]]=ord(sys.stdin.read(1))
if code[cp][0]=="O":print(vardict[code[cp][1]],end="")
if code[cp][0]=="C":print(chr(int(vardict[code[cp][1]])),end="")
if code[cp][0]=="G":
if int(vardict[code[cp][1]])>0:cp=int(vardict[code[cp][1]]//1-2)
cp+=1