DEV Community

Gabriel J
Gabriel J

Posted on

Zerando HackerRank ( 21 )

E no vigésimo primeiro episódio desta serie que queima os miolos, vamos abordar um problema envolvendo uma campanha publicitaria.

Imagine que você está adotando uma nova estratégia de publicidade viral. Você lança um novo produto e o compartilha com 5 pessoas nas redes sociais no primeiro dia.

Metade dessas pessoas gosta do anúncio e cada uma dessas pessoas que gosta do anúncio o compartilha com 3 de seus amigos. O número de curtidas se acumula a cada dia à medida que o anúncio alcança mais pessoas.

O objetivo deste exercício é mostrar quantas pessoas gostaram do anúncio após determinados dias.
Vamos nos aprofundar neste exemplo para melhor entendimento.

Dia 1:

Compartilhamentos = 5
Curtidas = 2
Curtidas cumulativas = 2

Metade dessas pessoas gosta do anúncio, então, se arredondarmos a resposta, 5/2 é 2. No primeiro dia, temos 2 curtidas cumulativas até agora.

Dia 2:

Compartilhamentos = 6
Curtidas = 3
Curtidas cumulativas = 5

No dia seguinte, as 2 pessoas que gostaram do anúncio no dia anterior compartilharam com 3 de seus amigos 2 * 3 = 6, então no dia 2 o anúncio cresce para 6 compartilhamentos. Metade dessas 6 pessoas curtem o anúncio 6/2 = 3 deixando-nos com 3 curtidas. Atualmente, temos 2 curtidas cumulativas, então adicionamos as curtidas do dia 1 e do dia 2 e atualizamos o número de curtidas cumulativas. Curtidas cumulativas = curtidas cumulativas do dia atual + curtidas cumulativas do dia anterior. Esse padrão continua até atingirmos o número de dias desejado.

Dia 3:

Compartilhamentos = 9
Curtidas = 4
Curtidas cumulativas = 9

Dia: 4:

Compartilhamentos = 12
Curtidas = 6
Curtidas cumulativas = 15

Em quatro dias, o anúncio acumulou 15 curtidas, então a função que vamos criar deve retornar 15.

Vamos transformar isso em código.

Primeiro vamos criar 3 variáveis:

Image description

A primeira variável chamada "shared" faz referência ao número de compartilhamentos, ela começa com o número de pessoas com quem o anúncio é compartilhado no dia 1, que é 5.

A segunda variável chamada "cumulative" carregará o número de curtidas que o anúncio receberá nos dias. Começamos com 0.

A terceira variável chamada "liked" faz referência as curtidas por dia. Começando com 0.

Usamos um loop for para percorrer o número de dias dessa forma:

Image description

Usamos Math.floor() para arredondar para baixo.

Image description

E em nossa variável cumulativa, usamos o operador de adição para adicionar ao número de curtidas que acumulamos a cada dia.

Image description

Cada pessoa que gostou do anúncio, compartilhe com 3 de seus amigos. Esse será o número de ações com as quais começaremos no dia seguinte.

Image description

Terminado o loop, retornamos a variável "cumulative" que nos dará o número de curtidas que recebemos em nos dias pedidos.

Nossa função completa ficara assim:

Image description

E assim fechamos mais um desafio.

Top comments (0)