Ejercicio: 3Eva_IT2005_T2 Juego biológico
Resultado esperado:
tamaño de matriz nxn:5
cantidad seres vivos: 20
[[1 1 1 1 0]
[1 1 1 0 1]
[0 1 1 1 1]
[1 1 1 1 1]
[0 0 1 1 1]]
porcentaje inicial: 80.0
nueva matriz:
[[1 1 1 1 0]
[1 0 1 0 1]
[0 1 0 1 1]
[1 1 1 0 1]
[0 0 1 1 1]]
porcentaje final: 68.0
>>>
Algoritmo en Python
# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 3Eva_IT2005_T2 Juego biológico
# propuesta: edelros@espol.edu.ec
# por ser semejante, se usa la funcion de:
# 3Eva_IT2006_T4 Juego planta bombas (buscaminas)
import numpy as np
import random as rnd
def plantabombas(m,n):
campo = np.zeros(shape=(n,n),dtype=int)
bomba = 1
while not(bomba>m):
fila = int(rnd.random()*n)+0
columna = int(rnd.random()*n)+0
if (campo[fila,columna]==0):
campo[fila,columna] = 1
bomba = bomba + 1
return(campo)
def porcentaje(campo):
tamano = np.shape(campo)
n = tamano[0]
m = tamano[1]
suma = 0
fila = 0
while not(fila>=n):
columna = 0
while not(columna>=m):
suma = suma + campo[fila,columna]
columna = columna + 1
fila = fila + 1
z = 100*suma/(n*n)
return(z)
# PROGRAMA literal a ------------------
n = int(input('tamaño de matriz nxn:'))
vivos = int(input('cantidad seres vivos: '))
# PROCEDIMIENTO
biologico = plantabombas(vivos,n)
participa1 = porcentaje(biologico)
# SALIDA
print(biologico)
print('porcentaje inicial:', participa1)
# PROGRAMA literal b ------------------
fila = 1 # desde segunda fila
while not(fila>=(n-1)): # hasta penultima fila
columna = 1 # desde segunda columna
while not(columna>=(n-1)): # hasta penultima columna
# suma celda izquierda y derecha
suma = biologico[fila-1,columna]+ biologico[fila+1,columna]
# suma celda arriba y abajo
suma = suma + biologico[fila,columna-1]+biologico[fila,columna+1]
if suma >=4: # sobrepoblacion, en la celda no se sobrevive
biologico[fila,columna] = 0
columna = columna + 1
fila = fila + 1
participa2 = porcentaje(biologico)
print('nueva matriz:')
print(biologico)
print('porcentaje final:', participa2)