Está en la página 1de 3

#TRABAJO 1 PARTE 2, SIMULACION DE LA MAQUINA DE REGISTROS ILIMITADA (MRI)

#
#Juan Camilo Garzon Upegui-Programacion Cientifica
#
#Funcion salto J(m,n,q)
def J(m,n,q):
cp=2
if m==n:
cp=q
else:
cp=1+cp
#Funcion cero Z(n)
def Z(n):
fww[n-1]=0
#Funcion sucesor S(n)
def S(n):
fww[n-1]=fww[n-1]+1

#Funcion Transferencia T(m,n)


def T(m,n):
fww[n-1]=fww[m-1]
#Con estas variables definidas abrimos los archivos que se encuentran en
la carpeta
# predeterminada por python 2.7
h=open('archivo_programa_MRI.txt','r')
fhh=h.readlines()

w=open('archivo_registros_MRI.txt','r')
fw=w.readlines()

###
# Sobre la lista creada apartir de la lectura de los dos archivos
(programa y registros)
# Realizo una serie de operaciones para eliminar caracteres inutiles y asi
obtener
# una lista mas comoda para trabajar
fh=fhh[:]
for i in range(len(fh)):
fh[i]=fh[i].replace('\n','')

for i in range(len(fw)):
fw[i]=fw[i].replace('\n','')

for i in range(len(fw)):
fw[i]=fw[i].replace(' ','')

for i in range(len(fh)):
fh[i]=fh[i][2:]

for i in range(len(fh)):
fh[i]=fh[i].replace(' ','')
### creare la lista del programa fh de una manera que se pueda leer
facilmente
for i in range(len(fh)):
fh[i]=fh[i].replace('(',',')

for i in range(len(fh)):
fh[i]=fh[i].replace(')','')

for i in range(len(fh)):
fh[i]=fh[i].split(',')

#### aqui creare la lista de registros de manera que quede asi:


# fww=[r1,r2,r3,r4,...,rn] los registros desde uno hasta n.
for i in range(len(fw)):
fw[i]=fw[i].split(':')

import copy
kk=copy.deepcopy(fh)

for i in range(len(kk)):
kk[i].pop(0)

for i in range(len(kk)):
for j in range(len(kk[i])):
kk[i][j]=int(kk[i][j])

maxkk=kk[:]
for i in range(len(kk)):
maxkk[i]=max(kk[i])

fww=range(max(maxkk))
for i in range(len(fww)):
fww[i]=0

for i in range(len(fw)):
fww[int(fw[i][0])-1]=int(fw[i][1])

###Ahora que tengo las dos listas basicas fh: programa y fww:registros
#procedo al desarrollo de la simulacion

def simuleMRI(fh,fww,N):
for cp in range(len(fh)):
if fh[cp].count('J')==1:
J(int(fh[cp][1]),int(fh[cp][2]),int(fh[cp][3]))
cp=cp
elif fh[cp].count('S')==1:
S(int(fh[cp][1]))
cp=cp+1
elif fh[cp].count('Z')==1:
Z(int(fh[cp][1]))
cp=cp+1
elif fh[cp].count('T')==1:
T(int(fh[cp][1]),int(fh[cp][2]))
cp=cp+1
else: print 'errormutherfuvker'
return fww

También podría gustarte