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!!

Heroku

This site is built on Heroku

Join the ranks of developers at Salesforce, Airbase, DEV, and more who deploy their mission critical applications on Heroku. Sign up today and launch your first app!

Get Started

Top comments (0)

SurveyJS custom survey software

JavaScript Form Builder UI Component

Generate dynamic JSON-driven forms directly in your JavaScript app (Angular, React, Vue.js, jQuery) with a fully customizable drag-and-drop form builder. Easily integrate with any backend system and retain full ownership over your data, with no user or form submission limits.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay