Trabajo Práctico 1 — Bichos: Una aventura en miniatura#
Introducción#
La princesa Atta está a cargo de la gestión de comida para la colonia de hormigas. Para esto, le gustaría predecir de alguna manera cuánta comida recolectarán las hormigas en un día. Para ello, le pide a usted que realice una simulación de la recolección de comida por parte de las hormigas.
Modelo#
El bosque se modela como una matriz de \(N \times N\) celdas, donde cada celda puede estar en uno de los siguientes estados:
- Celda vacía (verde)
- Celda con comida (blanco)
- Celda ocupada por una hormiga (rojo)
- Celda con un obstaculo (negro)
- Celda que ya fue recorrida por una hormiga (amarillo)
Parámetros del modelo:
- El tamaño de la grilla
- La cantidad de celdas con obstaculos
- La cantidad de celdas con comida
- La cantidad de hormigas
Reglas de la simulación#
- Se inicializa la grilla con todos los lugares libres
- Se ubica obstaculos, comida y hormigas en lugares aleatorios de la grilla
- En cada paso de la simulación la hormiga puede moverse hacia arriba, abajo, izquierda o derecha siempre y cuando en esa dirección no haya un obstaculo
- Si en la nueva celda que ocuparía la hormiga había comida, la recoje
- Cada celda por la que pasó una hormiga quedará marcada como tal por el resto de la simulación
Elecciones aleatorias
Para elegir un elemento aleatorio de una lista se puede usar el módulo random
de Python. Por ejemplo, para elegir
un elemento aleatorio de una lista l
se puede hacer random.choice(l)
.
Para elegir un número aleatorio entre dos números a
y b
se puede hacer random.randint(a, b)
.
Desarrollo#
Se te pide que escribas los siguientes tres programas utilizando el lenguaje de programación Python, cada uno en un archivo separado. Se espera que las salidas de estos programas sean textos legibles, claros y bien formateados.
1 — Simulación de hormigas#
Se fijan los parámetros del modelo en:
- La grilla es de \(30 \times 30\)
- Hay 10 obstaculos
- Hay 25 celdas con comida
- Hay 5 hormigas
Se te pide que escribas un programa que realice una simulación de las hormigas durante 200 pasos de simulación. Entre cada paso se debe esperar 0.25 segundos para que se pueda visualizar el avance de la simulación.
Esperar un tiempo
Para esperar un tiempo en Python se puede usar la función sleep
del módulo time
. Por ejemplo, para esperar 0.25
segundos se puede hacer time.sleep(0.25)
.
Para esto, por cada celda impriman el string "▓▓"
(son dos caracteres). El color con que se imprima ese string representará el estado de la celda.
Los estados se representan con los siguientes colores:
green
para celdas libresred
para las hormigaswhite
para las celdas con comidagrey
para los obstaculosyellow
para las celdas recorridas por las hormigas
Recomendamos usar la librería termcolor
para mostrar los colores en la terminal. Para instalarla pueden usar el
siguiente comando:
Importante
Puede ser que que deban usar pip3 install termcolor
en lugar de pip
para instalar la librería.
2 — Pasos para encontrar al menos la mitad de la comida#
Se fijan los parámetros del modelo en:
- La grilla es de \(250 \times 250\)
- Hay 100 obstaculos
- Hay 200 celdas con comida
- Hay 20 hormigas
Se te pide que escribas un programa que haga 100 simulaciones, deteniendo cada simulación cuando se haya encontrado la mitad de la comida. El programa debe imprimir la cantidad de pasos promedio, la cantidad de pasos mínima y la cantidad de pasos máxima que se necesitaron para encontrar al menos la mitad de la comida.
No se debe imprimir nada más que el resultado en este programa.
Salida ejemplo
Importante
Puede ser que el resultado obtenido en sus simulaciones sea distinto al de este ejemplo, pero debería ser cercano.
3 — Área total recorrida en promedio#
Se fijan los parámetros del modelo en:
- La grilla es de \(30 \times 30\)
- Hay 10 obstaculos
- Hay 0 celdas con comida
- Hay 5 hormigas
Se te pide que escribas un programa que haga 10000 simulaciones y que imprima el promedio del área total recorrida por las hormigas en las simulaciones después de 200 iteraciones. El área total recorrida es la cantidad de celdas distintas recorridas por las hormigas.
No se debe imprimir nada más que el resultado en este programa.
Importante
Puede ser que el resultado obtenido en sus simulaciones sea distinto al de este ejemplo, pero debería ser cercano.
Entrega#
El trabajo es individual. Se debe entregar los 4 archivos de Python generados a través de la tarea creada en el campus del curso. La fecha de entrega se encuentra en la misma tarea y en el calendario del curso.
Los nombres de los archivos deben ser:
tp1_1_apellido.py
tp1_2_apellido.py
tp1_3_apellido.py
tp1_funciones_apellido.py
El código debe estar implementado utilizando únicamente herramientas vistas en clase hasta el momento. No se permite usar librerías además de las que se mencionan en el enunciado.
Se recuerda a los estudiantes que las entregas deben ser un producto original de cada estudiante, por lo que se les pide revisar la sección 6 del programa de la materia y el Código de Honor y Ética.