Ejercicio: 2Eva_IT2015_T4 Movilidad de tortugas en región
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