El grupo de kínder está aprendiendo sobre el cultivo de plantas. A la maestra le pareció buena idea darle a la clase semillas para sembrar y cultivar en la tierra. Con ese fin, los niños colocaron vasitos a lo largo de las repisas de las ventanas y sembraron un tipo de planta en cada vasito. Los niños pudieron elegir sus favoritas entre cuatro tipos de semillas disponibles: grass, clover, radishes y violets.
Tu tarea es, a partir de un diagrama, determinar qué plantas le corresponden a cada estudiante de la clase del kínder.
En la clase hay 12 estudiantes:
Se plantan cuatro tipos distintos de semillas:
| Planta | Codificación en el diagrama |
|---|---|
| Grass | G |
| Clover | C |
| Radish | R |
| Violet | V |
Cada estudiante recibe cuatro vasos, dos en cada fila:
[window][window][window]
........................ # each dot represents a cup
........................
Su docente asigna los vasos a los estudiantes en orden alfabético según sus nombres, así que Alice va primero y Larry va al final.
Este es un diagrama de ejemplo que representa las plantas de Alice:
[window][window][window]
VR......................
RG......................
En la primera fila, la más cercana a las ventanas, tiene una violet y un radish. En la segunda fila tiene un radish y un poco de grass.
A tu programa se le darán las plantas de izquierda a derecha, empezando por la fila más cercana a las ventanas. Con esto, debe poder determinar qué plantas le pertenecen a cada estudiante.
Por ejemplo, si se le dice que el jardín se ve así:
[window][window][window]
VRCGVVRVCGGCCGVRGCVCGCGV
VRCCCGCRRGVCGCRVVCVGCGCV
Entonces, si se le piden las plantas de Alice, debe devolver:
Y si se le piden las plantas de Bob, daría:
Las pruebas de este ejercicio esperan que tu programa se implemente como una class Garden (mira también classes).
Si aún no conoces las clases en Python, este tutorial de Real Python puede ser un buen punto de partida adicional.
Tu class debe implementar un method llamado plants, que recibe el nombre de un estudiante como argumento y devuelve la list de nombres de plantas que le pertenecen a ese estudiante.
Crear el jardín de ejemplo:
[window][window][window]
VRCGVVRVCGGCCGVRGCVCGCGV
VRCCCGCRRGVCGCRVVCVGCGCV
se representaría, en las pruebas, como Garden("VRCGVVRVCGGCCGVRGCVCGCGV\nVRCCCGCRRGVCGCRVVCVGCGCV").
Para que esta representación funcione, tu class tendrá que implementar un método especial __init__().
Si no conoces __init__() o los constructores, objetos de clase y de instancia de la documentación de Python ofrece una explicación más detallada.
En algunas pruebas, se pasa una list de estudiantes como argumento a __init__().
Esto debe reemplazar la lista de doce estudiantes que se proporciona en el enunciado del problema.
Ambas sentencias deben funcionar con tu método __init__():
# Make a garden based on the default 12-student roster.
Garden("VRCGVVRVCGGCCGVRGCVCGCGV\nVRCCCGCRRGVCGCRVVCVGCGCV")
# Make a garden based on a 2-student roster.
Garden("VRCC\nVCGG", students=["Valorie", "Raven"])
Un enfoque es hacer que la list de estudiantes sea un argumento predeterminado; la documentación de Python describe los default parameters en profundidad al explicar las definiciones de funciones.
Regístrate en Exercism para aprender y dominar Python con 17 conceptos146 ejercicios y mentoría humana real, todo gratis.