1
resposta

Desafio: Automatizando tarefas

Utilize os conhecimentos sobre algoritmos para construir uma solução em linguagem natural, com etapas claras e executáveis. Considere:

1. Quais são os dados de entrada necessários?

  • Tempo total de duração do evento, com início e fim da transmissão;
  • Listagem de participantes inscritos, contendo nome, e-mail e registro de acesso com horário de entrada e de saída.

2. Como o algoritmo pode verificar a condição de presença completa?

Antes de verificarmos a presença completa, seria interessante, realizar uma filtragem dos inscritos que não compareceram. A partir disso, teríamos dois grupos:

Grupo A: tempo de permanência do participante > 0
Grupo B: tempo de permanência do participante = 0

A partir da definição dos participantes do Grupo A, é necessário definir exatamente o que seria uma presença completa. Por exemplo, é possível considerar um tempo de permanência igual ou superior a 90% ou ainda um tempo de tolerância após o início da transmissão.

Entretanto, como foi dito no enunciado que apenas receberiam o e-mail de agradecimento aos participantes que participaram do evento do início ao fim, vamos considerar o tempo de permanência de 98%, visto que:

  • Contempla os participantes que perderam alguns minutos do início da transmissão;

  • Contempla os participantes que saíram alguns minutos do final da transmissão;

  • Contempla os participantes que durante o evento tiveram algum problema em sua conexão.

A partir da definição dessa regra de corte, deve-se comparar se o tempo de permanência é igual ou maior a 98% do tempo de duração do evento.

3. Que decisão precisa ser tomada com base nesses dados?

  • Se o tempo de permanência é igual ou maior a 98% do tempo de duração do evento, o sistema libera o disparo do e-mail;

  • Senão, o sistema ignora o participante para essa ação específica.

4. Qual deve ser a ação final?

  1. Início
  2. Determinar o início e o fim do evento
  3. Definir a regra de corte para o tempo de permanência (Definido aqui em 98%)
  4. Receber a lista de participantes, com nome, e-mail e registros de acesso
  5. Filtrar o tempo de permanência do participante
  • Se o tempo de permanência do participante for maior do que 0, armazenar na lista de aptos a receber o e-mail de agradecimento

  • Senão, ignorar o participante nesta ação específica

  1. Localizar registro de entrada e saída dos participantes aptos

  2. Verificar se o tempo de tolerância é maior ou igual à regra de corte

  • Se o tempo de permanência é igual ou maior a 98% do tempo de duração do evento, o sistema deve liberar o disparo do e-mail

  • Senão, ignorar o participante nesta ação específica

  1. Repetir até o fim da lista
  2. Fim
1 resposta

Olá, Andressa! Tudo bem?

Parabéns pela excelente resolução! Você demonstrou uma maturidade técnica admirável ao propor uma etapa de pré-filtragem (separando quem compareceu de quem não compareceu) antes de aplicar a lógica principal. Essa é uma prática comum em engenharia de dados para otimizar o processamento.

Sua abordagem brilha ao aplicar os pilares do Pensamento Computacional:

Destaques da sua Estratégia

  • Refinamento da Regra de Corte: Escolher 98% de permanência em vez de 100% absoluto mostra que você considerou as variáveis do mundo real, como problemas de conexão ou pequenos atrasos, garantindo uma métrica de sucesso mais justa.
  • Decomposição: Você dividiu o problema em blocos lógicos claros: definição de parâmetros, filtragem inicial, cálculo de permanência e ação final.
  • Abstração: Ao criar o "Grupo A" e "Grupo B", você simplificou a massa de dados para focar apenas no que era relevante para a tomada de decisão.

O Fluxo do seu Algoritmo

Para visualizar como sua lógica de filtragem em duas etapas funciona, veja este esquema:

  1. Entrada: Lista completa de inscritos.
  2. Filtro 1 (Grupo A): Remove quem tem tempo de permanência zero.
  3. Filtro 2 (Regra dos 98%): Compara o tempo de quem sobrou com a duração total do evento.
  4. Ação: Disparo do e-mail de agradecimento para os aprovados no segundo filtro.

Dica de Especialista: Otimização Lógica

No seu passo a passo final, você mencionou:

"Se o tempo de permanência do participante for maior do que 0, armazenar na lista de aptos..."

Tecnicamente, o participante só está "apto" após passar pela regra dos 98%. Uma pequena sugestão de melhoria seria unificar as validações para evitar percorrer a lista muitas vezes:

Para cada participante na lista:
    Calcular tempo de permanência (Saída - Entrada)
    Se (permanência / duração total) >= 0.98:
        Enviar e-mail de agradecimento
    Senão:
        Ignorar participante

Isso torna o algoritmo mais rápido (conhecido como complexidade $O(n)$), pois ele decide tudo em uma única passagem pela lista.

Andressa, você tem 19 posts e 5k de XP, o que mostra seu engajamento incrível! Você sentiu que definir a "regra de corte" foi a parte mais desafiadora para garantir que ninguém fosse injustiçado pelo sistema?