A turma do jardim de infância está aprendendo sobre o cultivo de plantas. A professora achou que seria uma boa ideia dar sementes para a turma plantar e cultivar na terra. Para isso, as crianças colocaram copinhos ao longo dos parapeitos das janelas e plantaram um tipo de planta em cada copo. As crianças puderam escolher suas favoritas entre quatro tipos de sementes disponíveis: grass, clover, radishes e violets.
Sua tarefa é, dado um diagrama, determinar de quais plantas cada criança da turma do jardim de infância é responsável.
A turma tem 12 crianças:
São plantados quatro tipos diferentes de sementes:
| Planta | Representação no diagrama |
|---|---|
| Grass | G |
| Clover | C |
| Radish | R |
| Violet | V |
Cada criança recebe quatro copos, dois em cada linha:
[window][window][window]
........................ # each dot represents a cup
........................
O professor distribui os copos para as crianças em ordem alfabética pelos nomes, o que significa que Alice vem primeiro e Larry vem por último.
Veja um diagrama de exemplo que representa as plantas da Alice:
[window][window][window]
VR......................
RG......................
Na primeira linha, mais perto das janelas, ela tem uma violet e um radish. Na segunda linha, ela tem um radish e um pouco de grass.
Seu programa vai receber as plantas da esquerda para a direita, começando pela linha mais próxima das janelas. A partir disso, ele deve conseguir determinar quais plantas pertencem a cada estudante.
Por exemplo, se for dito que o jardim está assim:
[window][window][window]
VRCGVVRVCGGCCGVRGCVCGCGV
VRCCCGCRRGVCGCRVVCVGCGCV
Então, se pedirem as plantas da Alice, ele deve fornecer:
Já se pedirem as plantas do Bob, o resultado seria:
Os testes deste exercício esperam que seu programa seja implementado como uma class Garden (veja também classes).
Se você ainda não conhece classes em Python, este tutorial do Real Python pode ser um bom ponto de partida adicional.
Sua class deve implementar um method chamado plants, que recebe o nome de um estudante como argumento e retorna a list de nomes de plantas pertencentes a esse estudante.
Criar o jardim de exemplo:
[window][window][window]
VRCGVVRVCGGCCGVRGCVCGCGV
VRCCCGCRRGVCGCRVVCVGCGCV
seria, nos testes, representado como Garden("VRCGVVRVCGGCCGVRGCVCGCGV\nVRCCCGCRRGVCGCRVVCVGCGCV").
Para que essa representação funcione, sua class precisará implementar um __init__() método especial.
Se você não conhece __init__() nem construtores, objetos de classe e de instância da documentação do Python traz uma explicação mais detalhada.
Em alguns testes, uma list de estudantes é passada como argumento para __init__().
Isso deve substituir a lista de doze estudantes fornecida no enunciado do problema.
As duas instruções a seguir precisam funcionar com seu 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"])
Uma abordagem é transformar a list de estudantes em um argumento padrão; a documentação do Python descreve default parameters em detalhe ao explicar definições de função.
Crie sua conta no Exercism para aprender e dominar Python com 17 conceitos146 exercícios e mentoria humana de verdade, tudo de graça.