DEV Community

Altencir Junior
Altencir Junior

Posted on

Resolvendo problemas no HackerRank: Dividindo Chocolates

Saudações. Hoje enfrentaremos mais um problema,veremos como dois irmãos dividem seu chocolate, mas com algumas regras específicas para serem seguidas. No exercício nos é passado algumas regras a serem seguidas para que sua conclusão seja correta, vejamos:

SubArrayDivision -

Antes de tudo, vamos passar os parâmetros exigidos pelos irmãos, para que Ron, o irmão receba de Lily a irmão os chocolates.

  • s=number of choco,d= ron day,m= ron month
  • encontrar o seguimento em que:
  • quantidade de pedaços = m; soma dos pedaços = d

Sabendo assim todas as regras do exercício, temos que saber agora sobre um molde. Com o que se foi passado antes, o exercício nos pede o seguinte resultado:

5
1 2 1 3 2
3 2
Enter fullscreen mode Exit fullscreen mode

Com todas as exigências postas,façamos o que se pede:

function birthday(s, d, m) {
  const possibleSegments = s
  .reduce((acc,_,i,arr) => {
    acc.push(arr.slice(i,i+m));

    return acc;
  },[])
  .filter(seg => seg.length === m)

    const correctSegment = possibleSegments
    .filter(seg => seg.reduce((acc,cur) => acc + cur) === d)

  return correctSegment.length
}
Enter fullscreen mode Exit fullscreen mode

A função birthday recebe três parâmetros: s (um array de inteiros), d (um número inteiro) e m (um número inteiro).

  1. A primeira parte da função usa o método reduce para dividir o array s em segmentos consecutivos com comprimento m. Cada segmento é adicionado ao array acc, que é retornado ao final do reduce.

  2. Em seguida, o método filter é usado para filtrar apenas os segmentos com comprimento igual a m.

  3. Em seguida, passa a regra onde usará um reduce para filtrar a soma de pedaços do chocolate.

O resultado será:

5//pedaços
1 2 1 3 2 // a lista dada
3 2 // 3:dia de aniversário RON, 2:
mês RON 

2// ele deseja os comprimentos 2 que somam 3,como existem apenas duas possibilidades: [1,2] e [2,1], só existem 2. Pois ele pediu o número de vezes, onde ao final do código retornamos .length
Enter fullscreen mode Exit fullscreen mode

Com isso finalizamos mais um episódio do HackerRank. Até a próxima!!

Top comments (0)