Com foco em melhorar ainda mais o rendimento e aprendizado em uma linguagem, também exercendo a lógica da programação, nessa nova série de resoluções irei demonstrar como resolvi certos conflitos de lógica: alguns simples, outros que necessitam de mais esforço.
Plus Minus
No episódio de hoje, veremos algo bem interessante.Teremos uma listagem de números dentro de um array, e nele teremos 2 números positivos, 2 negativos e 1 número zero. Nosso objetivo é pegar os valores positivos, negativos e zero, e dividir pelo número de parâmetros na função:
arr = [1,1,0,-1,-1]
0.500000
0.333333
0.166667
É possível resolver esse desafio de muitas formas. A forma que fiz foi a seguinte:
function plusMinus(arr) {
// Write your code here
const all = arr.length
let positive = 0, negative = 0, zero = 0;
for (let i = 0; i < arr.length; i++){
if (arr[i] > 0) positive++;
if (arr[i] < 0) negative++;
if (arr[i] === 0) zero++;
}
let positiveVar = (positive / all).toFixed(6);
let negativeVar = (negative / all).toFixed(6);
let zeroVar = (zero / all).toFixed(6);
console.log(`${positiveVar}\n ${negativeVar}\n ${zeroVar}`)
}
O código acima cria uma variável que vai pegar o comprimento do parâmetro posto no PlusMinus, após isso criasse uma variável que armazenará valores positivos, negativos e zero no futuro, mas que no momento começa em 0.
Após isso se coloca o for e cria um index i que estará ligado diretamente a arr.length que é o parâmetro pra comprimento.
if (arr[i] > 0) positive++;
if (arr[i] < 0) negative++;
if (arr[i] === 0) zero++;
Finalizando declara as variáveis de positivo, negativo e zero divididas pelo número de arr.length e com método .toFixed, e chamando elas no console.log.
Existe uma resolução alternativa para resolver essa questão, que consegue adquirir um resultado igual:
//codigo alternativo.
/*let positive = (arr.filter(num => num > 0).length)/arr.length
let negative = (arr.filter(num => num < 0).length)/arr.length
let zero = (arr.filter(num => num == 0).length)/arr.length
console.log(positive.toFixed(6))
console.log(negative.toFixed(6))
console.log(zero.toFixed(6))*/
Com isso, finalizamos os problemas no HackerRank de hoje. Até a próxima!
Top comments (0)