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);
}
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
Com isso concluímos mais um episódio, e nos vemos na próxima!!!
Top comments (0)