Ejercicio: 2Eva2015TI_T4 Movilidad de tortugas en región
Algoritmo en Python
Propuesta de solución en Python, continúa desde el tema 3:
# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 2Eva_IT2015_T3 Distribuye tortugas en región
import numpy as np
import random as rnd
def distribuye(n,m,q,total):
isla = np.zeros(shape=(n,m),dtype = int)
unatortuga = 1
while not(unatortuga > total):
fila = int(rnd.random()*n)+0
columna = int(rnd.random()*m)+0
if (isla[fila,columna]<q):
isla[fila,columna] = isla[fila,columna] + 1
unatortuga = unatortuga+1
return(isla)
# 2Eva_IT2015_T4 Movilidad de tortugas en región
# usar funciones para operaciones intermedias
def cuentaceros(isla):
tamano = np.shape(isla)
n = tamano[0]
m = tamano[1]
cuenta = 0
for f in range(0,n,1):
for c in range(0,m,1):
if (isla[f,c] ==0):
cuenta = cuenta +1
return(cuenta)
def muevetortuga(isla):
tamano = np.shape(isla)
n = tamano[0]
m = tamano[1]
# crear una situacion posterior,
# donde se mueve cada tortuga
posterior = np.zeros(shape=(n,m),dtype = int)
for f in range(0,n,1):
for c in range(0,m,1):
cuantas = isla[f,c]
if (cuantas>=1):
tortugas = 1
while not(tortugas>cuantas):
# mueve una tortuga
mueve = int(rnd.random()*5)+0
if (mueve ==1):
# verifica limites, sino se pierde la tortuga
if ((f-1)>=0 and (c-1)>=0):
posterior[f-1,c-1] = posterior[f-1,c-1] +1
if (mueve ==2):
if ((f-1)>=0 and (c+1)<m):
posterior[f-1,c+1] = posterior[f-1,c+1] +1
if (mueve ==3):
if ((f+1)=0):
posterior[f+1,c-1] = posterior[f+1,c-1] +1
if (mueve ==4):
if ((f+1)<n and (c+1)<m):
posterior[f+1,c+1] = posterior[f+1,c+1] +1
tortugas = tortugas +1
return(posterior)
# INGRESO
n = int(input('filas : '))
m = int(input('columnas : '))
q = int(input('maximo por casilla : '))
total = int(input('tortugas en cautiverio : '))
# Tarea: validar que total no exceda capacidad de isla
# PROCEDIMIENTO
inicial = distribuye(n,m,q,total)
inicialceros = cuentaceros(inicial)
posterior = muevetortuga(inicial)
perdidas = np.sum(inicial)- np.sum(posterior)
# SALIDA
print('isla al inicio: ')
print(inicial)
print('casillas vacias en inicial: ', inicialceros)
print('isla despues de un periodo: ')
print(posterior)
print('tortugas perdidas: ', perdidas)
Nota: considera que si la tortuga sale de la matriz, ya no se la cuenta, desaparece, muere.
filas : 4
columnas : 6
maximo por casilla : 5
tortugas en cautiverio : 20
isla al inicio:
[[1 1 1 0 0 3]
[0 2 1 2 0 1]
[0 0 0 0 1 0]
[2 2 3 0 0 0]]
casillas vacias en inicial: 12
isla despues de un periodo:
[[0 0 2 1 1 0]
[0 0 0 0 0 0]
[2 1 0 0 1 0]
[0 0 0 1 0 0]]
tortugas perdidas: 11