Está en la página 1de 9

basedatos=open('MB_FINAL.

txt','r')
tabla=[]
for linea in basedatos:
valores=linea.strip().split(':')
bloque0=float(valores[0])
bloque1=float(valores[1])
bloque2=float(valores[2])
bloque3=float(valores[3])
bloque4=float(valores[4])
bloque5=float(valores[5])
bloque6=float(valores[6])
bloque7=float(valores[7])
bloque8=float(valores[8])
bloque9=float(valores[9])
bloque10=float(valores[10])
bloque11=float(valores[11])
bloque12=float(valores[12])
bloque13=float(valores[13])
bloque14=float(valores[14])
bloque15=float(valores[15])
bloque16=float(valores[16])
bloque17=float(valores[17])
bloque18=float(valores[18])
bloque19=float(valores[19])
bloque20=float(valores[20])
bloque21=float(valores[21])
block=[bloque0]+[bloque1]+[bloque2]+[bloque3]+[bloque4]+[bloque5]+[bloque6]+
[bloque7]+[bloque8]+[bloque9]+[bloque10]+[bloque11]+[bloque12]+[bloque13]+[bloqu
e14]+[bloque15]+[bloque16]+[bloque17]+[bloque18]+[bloque19]+[bloque20]+[bloque21
]
tabla.append(block)

"""A=[[1,1,-1,-1,-1,-1,3,-1,-1,-1,-1],[0,-1,1,2,-1,-1,5,-1,-1,-1,0],[0,0,-1,-1,1
,-1,-1,-1,-1,0,0],[0,0,0,3,-1,-1,6,7,0,0,0]]"""
print("PRIMERA ITERACIN")
B=[]
C=[]
v=0
c=22
#COLUMNAS DE LA MATRIZ#
print("PRIMER NIVEL")
for i in range(1):
for j in range(c):
if tabla[i][j]>0:
B.append(tabla[i][j])
C.append([i,j])
tabla[i][j]=0
v=sum(B)
Z0=C
print("ESTOS SON LOS BLOQUES MINADOS EN EL NIVEL 1: ",C) #POSICION DE LOS BLOQU
ES MINADOS EN EL PRIMER NIVEL#
print("VALOR DE LOS BLOQUES MINADOS EN EL NIVEL 1: ",v) #SUMA DE LOS VALORES DE
LOS BLOQUES MINADOS EN EL PRIMER NIVEL#
print("SEGUNDO NIVEL")

#SEGUNDO NIVEL#

for i in range(1,2,1):
for j in range(c):
a=0
S=[]
if tabla[i][j]>0:
D=[]
E=[]
S.append([i,j])
z=0
a=tabla[i][j]
for h in range(i-1,-1,-1):
for p in range(j-1,j+2,1):
if tabla[h][p]<=0:
D.append(tabla[h][p])
#VALORES DE BLOQUES CON VALORE
S NEGATIVOS#
E.append([h,p])
#POSICIN DE BLOQUES CON VALORES NEG
ATIVOS#
d=sum(D)
if(-1)*d>=a:
#NO SE MINARAN ESTOS BLOQUES, SOLO PU
EDEN SALDARSE#
W=[]
P=[]
R=[]
for m in range(len(D)):
W.append(D[m])
x=sum(W)
P.append(x)
for o in range(len(P)):
if (-1)*P[o]>a:
break
H=D[0:o]
#VALORE
S DE BLOQUES DEL CONO QUE SERAN SALDADOS#
R=E[0:o]
tabla[i][j]=P[o-1]+a
print("ESTOS BLOQUES: ",R," SON SALDADOS AL EXTRAER EL BLOQUE: "
,S) #BLOQUES NO MINADOS, PERO PAGADOS SI ES QUE SE EXTRAYERAN; DEBERAN VOLVERS
E CERO#
t=[]
for b in range(len(R)):
for n in range(2):
t.append(R[b][n])
#POSICIONES DE LOS
BLOQUES SALDADOS PARA MODIFICAR LA LISTA A#
for f in range(0,len(t),2):
ax=t[f]
ay=t[f+1]
tabla[ax][ay]=0

if (-1)*d<a:
valor=a+d
#VALOR DEL BLOQUE MINADO#
t=[]
for b in range(len(E)):
for n in range(2):
t.append(E[b][n])
#POSICIONES DE LOS BLOQ
UES PERTENECIENTES AL CONO QUE ESTAN ENCIMA DEL BLOQUE A MINAR#

for f in range(0,len(t),2):
ax=t[f]
ay=t[f+1]
tabla[ax][ay]=0
tabla[i][j]=0
Z1=S
print("POSICIN DEL BLOQUE MINADO: ",S)
print("VALOR ACUMULADO HASTA EL NIVEL 2: ",v+valor)
#MATRIZ DE BLOQUES
MODIFICADA CON BLOQUES MINADOS#
print("NIVELES FINALES")
valor2=0
Z2=[]
INADOS EN NIVELES FINALES#
for i in range(2,len(tabla),1):
for j in range(c):
a2=0
S2=[]

#TODOS LOS NIVELES SIGUIENTES#


#LISTA QUE ACUMULAR LA POSICIN DE LOS BLOQUES M

if tabla[i][j]>0:
D2=[]
E2=[]
S2.append([i,j])
z2=0
a2=tabla[i][j]
for h2 in range(i-1,-1,-1):
for p2 in range(j+(h2-i),j-(h2-i)+1,1):
D2.append(tabla[h2][p2])

#VALORES DE BLOQUES CON

VALORES NEGATIVOS#
E2.append([h2,p2])

#POSICIN DE BLOQUES CON VAL

ORES NEGATIVOS#
d2=sum(D2)
if (-1)*d2>=a2:
SOLO PUEDEN SALDARSE#
W2=[]
P2=[]
R2=[]
for m2 in range(len(D2)):
W2.append(D2[m2])
x2=sum(W2)
P2.append(x2)

#NO SE MINARAN ESTOS BLOQUES,

for o2 in range(len(P2)):
if (-1)*P2[o2]>a2:
break
H2=D2[0:o2]
R2=E2[0:o2]
tabla[i][j]=P2[o2-1]+a2
print("ESTOS BLOQUES: ",R2," SON SALDADOS AL EXTRAER EL BLOQUE:
",S2) #BLOQUES NO MINADOS, PERO PAGADOS SI ES QUE SE EXTRAYERAN; DEBERAN VOLVE
RSE CERO#
t2=[]
for b2 in range(len(R2)):
for n2 in range(2):
t2.append(R2[b2][n2])
#POSICIONES DE LOS BL

OQUES PERTENECIENTES AL CONO QUE ESTAN ENCIMA DEL BLOQUE A MINAR#


for f2 in range(0,len(t2),2):
ax2=t2[f2]
ay2=t2[f2+1]
tabla[ax2][ay2]=0
if (-1)*d2<a2:
valor2=a2+d2+valor2
t2=[]
for b2 in range(len(E2)):
for n2 in range(2):
t2.append(E2[b2][n2])
#POSICIONES DE LOS
BLOQUES PERTENECIENTES AL CONO QUE ESTAN ENCIMA DEL BLOQUE A MINAR#
for f2 in range(0,len(t2),2):
ax2=t2[f2]
ay2=t2[f2+1]
tabla[ax2][ay2]=0
tabla[i][j]=0
Z2=Z2+(S2)
print("POSICIN DEL BLOQUE MINADO: ",S2)
print("VALOR ACUMULADO HASTA EL NIVEL FINAL: ",v+valor+valor2)
"""print("MATRIZ FINAL: ",tabla)"""
#MATRIZ DE BLOQUES MODIFICADA CON BLOQU
ES MINADOS#
basedatos.close()
print("SEGUNDA ITERACIN")
basedatos=open('MB_FINAL.txt','r')
tabla2=[]
for linea in basedatos:
valores=linea.strip().split(':')
bloque0=float(valores[0])
bloque1=float(valores[1])
bloque2=float(valores[2])
bloque3=float(valores[3])
bloque4=float(valores[4])
bloque5=float(valores[5])
bloque6=float(valores[6])
bloque7=float(valores[7])
bloque8=float(valores[8])
bloque9=float(valores[9])
bloque10=float(valores[10])
bloque11=float(valores[11])
bloque12=float(valores[12])
bloque13=float(valores[13])
bloque14=float(valores[14])
bloque15=float(valores[15])
bloque16=float(valores[16])
bloque17=float(valores[17])
bloque18=float(valores[18])
bloque19=float(valores[19])
bloque20=float(valores[20])
bloque21=float(valores[21])
block=[bloque0]+[bloque1]+[bloque2]+[bloque3]+[bloque4]+[bloque5]+[bloque6]+
[bloque7]+[bloque8]+[bloque9]+[bloque10]+[bloque11]+[bloque12]+[bloque13]+[bloqu

e14]+[bloque15]+[bloque16]+[bloque17]+[bloque18]+[bloque19]+[bloque20]+[bloque21
]
tabla2.append(block)
"""A2=[[1,1,-1,-1,-1,-1,3,-1,-1,-1,-1],[0,-1,1,2,-1,-1,5,-1,-1,-1,0],[0,0,-1,-1,
1,-1,-1,-1,-1,0,0],[0,0,0,3,-1,-1,6,7,0,0,0]]"""
#COPIA DE SEGURIDAD DE LO
S BLOQUES PRINCIPALES#
Z=Z0+Z1+Z2
MINADOS#
Z.reverse();

#LISTA QUE CONTIENE LA POSICIN DE LOS BLOQUES

Q=[]
for g in range (len(Z)):
for in range(2):
Q.append(Z[g][])
for w in range(0,len(Q),2):
ix=Q[w]
jy=Q[w+1]
tabla2[ix][jy]=0
for posicion1 in range (ix-1,-1,-1):
for posicion2 in range (jy+(posicion1-ix),jy-(posicion1-ix)+1,1):
tabla2[posicion1][posicion2]=0
"""print("MODIFICACIN DE LA MATRIZ SACANDO LOS BLOQUES MINADOS: ",tabla2)"""
print("PRIMER NIVEL")
B3=[]
C3=[]
v3=0
c3=22
Z0_2=[]
for i2 in range(1):
for j2 in range(c3):
if tabla2[i2][j2]>0:
B3.append(tabla2[i2][j2])
C3.append([i2,j2])
tabla2[i][j]=0
v3=sum(B3)
Z0_2=C3
print("ESTOS SON LOS BLOQUES MINADOS EN EL NIVEL 1: ",C3) #POSICION DE LOS BLOQ
UES MINADOS EN EL PRIMER NIVEL#
print("VALOR DE LOS BLOQUES MINADOS EN EL NIVEL 1: ",v3) #SUMA DE LOS VALORES D
E LOS BLOQUES MINADOS EN EL PRIMER NIVEL#
print("NIVELES FINALES")
valor3=0
Z2_2=[]
for i2 in range(1,len(tabla2),1):
for j2 in range(c3):
a3=0
S3=[]
if tabla2[i2][j2]>0:

D3=[]
E3=[]
S3.append([i2,j2])
a3=tabla2[i2][j2]
for h3 in range(i2-1,-1,-1):
for p3 in range(j2+(h3-i2),j2-(h3-i2)+1,1):
D3.append(tabla2[h3][p3])

#VALORES DE BLOQUES CO

N VALORES NEGATIVOS#
E3.append([h3,p3])

#POSICIN DE BLOQUES CON VAL

ORES NEGATIVOS#
d3=sum(D3)
if (-1)*d3>=a3:
SOLO PUEDEN SALDARSE#
W3=[]
P3=[]
R3=[]
for m3 in range(len(D3)):
W3.append(D3[m3])
x3=sum(W3)
P3.append(x3)

#NO SE MINARAN ESTOS BLOQUES,

for o3 in range(len(P3)):
if (-1)*P3[o3]>a3:
break
H3=D3[0:o3]
R3=E3[0:o3]
tabla2[i2][j2]=P3[o3-1]+a3
print("ESTOS BLOQUES: ",R3," SON SALDADOS AL EXTRAER EL BLOQUE:
",S3) #BLOQUES NO MINADOS, PERO PAGADOS SI ES QUE SE EXTRAYERAN; DEBERAN VOLVE
RSE CERO#
t3=[]
for b3 in range(len(R3)):
for n3 in range(2):
t3.append(R3[b3][n3])
#POSICIONES DE LOS BL
OQUES PERTENECIENTES AL CONO QUE ESTAN ENCIMA DEL BLOQUE A MINAR#
for f3 in range(0,len(t3),2):
ax3=t3[f3]
ay3=t3[f3+1]
tabla2[ax3][ay3]=0
if (-1)*d3<a3:
valor3=a3+d3+valor3
t3=[]
for b3 in range(len(E3)):
for n3 in range(2):
t3.append(E3[b3][n3])
#POSICIONES DE LOS
BLOQUES PERTENECIENTES AL CONO QUE ESTAN ENCIMA DEL BLOQUE A MINAR#
for f3 in range(0,len(t3),2):
ax3=t3[f3]
ay3=t3[f3+1]
tabla2[ax3][ay3]=0
tabla2[i2][j2]=0
Z2_2=Z2_2+S3

print("POSICON DEL BLOQUE MINADO: ",S3)


print("VALOR ACUMULADO HASTA EL NIVEL FINAL: ",v3+valor3)
basedatos.close()
basedatos=open('MB_FINAL.txt','r')
tabla3=[]
for linea in basedatos:
valores=linea.strip().split(':')
bloque0=float(valores[0])
bloque1=float(valores[1])
bloque2=float(valores[2])
bloque3=float(valores[3])
bloque4=float(valores[4])
bloque5=float(valores[5])
bloque6=float(valores[6])
bloque7=float(valores[7])
bloque8=float(valores[8])
bloque9=float(valores[9])
bloque10=float(valores[10])
bloque11=float(valores[11])
bloque12=float(valores[12])
bloque13=float(valores[13])
bloque14=float(valores[14])
bloque15=float(valores[15])
bloque16=float(valores[16])
bloque17=float(valores[17])
bloque18=float(valores[18])
bloque19=float(valores[19])
bloque20=float(valores[20])
bloque21=float(valores[21])
block=[bloque0]+[bloque1]+[bloque2]+[bloque3]+[bloque4]+[bloque5]+[bloque6]+
[bloque7]+[bloque8]+[bloque9]+[bloque10]+[bloque11]+[bloque12]+[bloque13]+[bloqu
e14]+[bloque15]+[bloque16]+[bloque17]+[bloque18]+[bloque19]+[bloque20]+[bloque21
]
tabla3.append(block)

"""A3=[[1,1,-1,-1,-1,-1,3,-1,-1,-1,-1],[0,-1,1,2,-1,-1,5,-1,-1,-1,0],[0,0,-1,-1,
1,-1,-1,-1,-1,0,0],[0,0,0,3,-1,-1,6,7,0,0,0]]"""
#COPIA DE SEGURIDAD DE LO
S BLOQUES PRINCIPALES#
Z=Z0+Z1+Z2
MINADOS#
Z.reverse();

#LISTA QUE CONTIENE LA POSICIN DE LOS BLOQUES

Q=[]
for g in range (len(Z)):
for in range(2):
Q.append(Z[g][])
for w in range(0,len(Q),2):
ix=Q[w]
jy=Q[w+1]
tabla3[ix][jy]=0
for posicion1 in range (ix-1,-1,-1):

for posicion2 in range (jy+(posicion1-ix),jy-(posicion1-ix)+1,1):


tabla3[posicion1][posicion2]=0

Z_2=Z0_2+Z2_2
ES MINADOS#
Z_2.reverse();

#LISTA QUE CONTIENE LA POSICIN DE LOS BLOQU

Q2=[]
for g2 in range (len(Z_2)):
for 2 in range(2):
Q2.append(Z_2[g2][2])
for w2 in range(0,len(Q2),2):
ix2=Q2[w2]
jy2=Q2[w2+1]
tabla3[ix2][jy2]=0
for posicion1_2 in range (ix2-1,-1,-1):
for posicion2_2 in range (jy2+(posicion1_2-ix2),jy2-(posicion1_2-ix2)+1,
1):
tabla3[posicion1_2][posicion2_2]=0
"""print("MATRIZ FINAL DE LA SECCIN DEL TAJO: ",tabla3)"""
basedatos.close()
basedatos=open('MB_FINAL.txt','r')
tabla4=[]
for linea in basedatos:
valores=linea.strip().split(':')
bloque0=float(valores[0])
bloque1=float(valores[1])
bloque2=float(valores[2])
bloque3=float(valores[3])
bloque4=float(valores[4])
bloque5=float(valores[5])
bloque6=float(valores[6])
bloque7=float(valores[7])
bloque8=float(valores[8])
bloque9=float(valores[9])
bloque10=float(valores[10])
bloque11=float(valores[11])
bloque12=float(valores[12])
bloque13=float(valores[13])
bloque14=float(valores[14])
bloque15=float(valores[15])
bloque16=float(valores[16])
bloque17=float(valores[17])
bloque18=float(valores[18])
bloque19=float(valores[19])
bloque20=float(valores[20])
bloque21=float(valores[21])
block=[bloque0]+[bloque1]+[bloque2]+[bloque3]+[bloque4]+[bloque5]+[bloque6]+
[bloque7]+[bloque8]+[bloque9]+[bloque10]+[bloque11]+[bloque12]+[bloque13]+[bloqu
e14]+[bloque15]+[bloque16]+[bloque17]+[bloque18]+[bloque19]+[bloque20]+[bloque21
]
tabla4.append(block)

"""print("MATRIZ INICIAL DE LA SECCIN DEL TAJO: ",tabla4)"""


basedatos.close()

También podría gustarte