DEV Community

Altencir Junior
Altencir Junior

Posted on

Resolvendo problemas no HackerRank: Dividindo a conta

Olá, seja bem vindo a mais uma etapa do Resolvendo problemas no Hacker-Rank,nessa sessão iremos dividir a conta de dois amigos: Brian e Anna, vejamos como fazer uma divisão justa entre os dois,principalmente sobre o que cada um pagará pelo alimento que ingeriu.

Bill Division -

O problema se dá em dois amigos dividirem a conta, seus nomes: Brian e Anna.O objetivo é que a conta seja dividida de maneira justa entre os dois,com cada um pagando o que ingeriu. Com isso, nos dão um exemplo de como será o problema:

  • (conta)bill = [2,4,6].

  • Anna, não comeu o item k= bill2 que custa 6. Com isso, Anna pagará (2+4)/2 =3.

  • Se ele incluir o custo de k, Anna pagaria (2+4+6)/2 =6. Tendo logo que devolver 3 a Anna.

  • Bill: um array de números inteiros representando o custo de cada item pedido.

K: um número inteiro representando o índice baseado em zero do item que Anna não ingeriu.

B: a quantia de dinheiro que Anna contribuiu para a conta

O código para resolver isso foi feito usando Reduce, da seguinte maneira:

function bonAppetit(bill, k, b) {
    // Write your code here
 const payedForItem = bill[k];
 const actualBill = (bill.reduce((acc, cur) => acc + cur, 0) - payedForItem) / 2;

console.log(actualBill === b ? "Bon Appetit" : b - actualBill);
}
Enter fullscreen mode Exit fullscreen mode

A primeira linha da função cria uma variável chamada payedForItem, que armazena o valor do item que a pessoa não quer pagar.

Em seguida, é criada uma variável chamada actualBill que calcula o valor real que a pessoa deve pagar, subtraindo o valor do item que ela não quer pagar (payedForItem) do total da conta (bill.reduce((acc, act)=>{return acc+act;},0)) e dividindo o resultado por dois (para dividir a conta igualmente entre duas pessoas).

A função então verifica se o valor real que a pessoa deve pagar (actualBill) é igual ao valor que ela pagou inicialmente (b). Se for, a função retorna a string "Bon Appetit". Caso contrário, a função imprime a diferença entre o valor que a pessoa pagou inicialmente (b) e o valor real que ela deveria pagar (actualBill).

O resultado será input 5.

4 1
3 10 2 9
12

5
Enter fullscreen mode Exit fullscreen mode

Com isso concluímos mais um episódio, e nos vemos na próxima!!!

Top comments (0)