GithubHelp home page GithubHelp logo

Comments (9)

leonelsanchesdasilva avatar leonelsanchesdasilva commented on May 20, 2024 2

Mas pensando aqui, Pompeu. Cara, mas será que se fizer dos dois jeitos, não vai dar na mesma? Vou te mostrar o porquê.

module.exports.media = function () {
  // Pega cada item que veio por parâmetro e coloca em uma posição diferente em um array.
  const args = [...arguments];

  // Soma todos os itens.
  const valoresSomados = args.reduce((acumulador, itemAtual) => acumulador + itemAtual, 0);

  // Faz o cáculo da média em si e retorna.
  return (valoresSomados / args.length);
};

Então desse modo, na implementação já colocaria tudo em um array, então não faria muito sentido permitir o usuário mandar um array de valores ou apenas os valores separados por vírgula, porque no final das contas, vai dar no mesmo.
Pensando assim, o método então receberia apenas os valores que o usuário gostaria de cácular a média e obviamente, todos tem de ser do tipo número.

O que acham, @lucaspompeun e @leonelsanchesdasilva ?

A implementação considerando número variável de argumentos é possível, mas vai aumentar o tratamento dos argumentos.

Nada me impediria, por exemplo, de passar uma série indefinida de arrays numéricos, o que já faria o método falhar na hora de fazer a redução. Um .flat() de todos os arrays antes teria que ser feito.

Eu faria media() apenas aceitando um vetor único de números. Se houver necessidade de implementar uma versão mais robusta, isso pode ser feito depois.

from egua.

lucaspompeun avatar lucaspompeun commented on May 20, 2024 1

@barbozafernando positivo, é isso mesmo. Nesses caso o argumento precisa ser uma lista.

from egua.

barbozafernando avatar barbozafernando commented on May 20, 2024 1

Pompeu, pensei em duas formas de implementar essa função.

  • A primeira, é o cara chamando media() e passando quantos parâmetros quiser pra fazer a média.
    Seria algo como:
var mat = importar('eguamat');
escreva(mat.media(2, 5, 10, 20));
// 9.25 
  • A segunda, seria como vc falou. O cara já passar uma lista pra fazer o cálculo.

Daria pra implementar os dois modos. O que acha, @lucaspompeun ?

from egua.

lucaspompeun avatar lucaspompeun commented on May 20, 2024 1

Mas pensando aqui, Pompeu. Cara, mas será que se fizer dos dois jeitos, não vai dar na mesma? Vou te mostrar o porquê.

module.exports.media = function () {
  // Pega cada item que veio por parâmetro e coloca em uma posição diferente em um array.
  const args = [...arguments];

  // Soma todos os itens.
  const valoresSomados = args.reduce((acumulador, itemAtual) => acumulador + itemAtual, 0);

  // Faz o cáculo da média em si e retorna.
  return (valoresSomados / args.length);
};

Então desse modo, na implementação já colocaria tudo em um array, então não faria muito sentido permitir o usuário mandar um array de valores ou apenas os valores separados por vírgula, porque no final das contas, vai dar no mesmo.
Pensando assim, o método então receberia apenas os valores que o usuário gostaria de cácular a média e obviamente, todos tem de ser do tipo número.

O que acham, @lucaspompeun e @leonelsanchesdasilva ?

Eu particularmente gosto que tenha como entrada um vetor pois ajuda o usuário a entender uma das aplicações de vetores. Esse é o motivo pelo qual gosto de ter o vetor como entrada. O que vocês acham?

from egua.

barbozafernando avatar barbozafernando commented on May 20, 2024 1

Mas pensando aqui, Pompeu. Cara, mas será que se fizer dos dois jeitos, não vai dar na mesma? Vou te mostrar o porquê.

module.exports.media = function () {
  // Pega cada item que veio por parâmetro e coloca em uma posição diferente em um array.
  const args = [...arguments];

  // Soma todos os itens.
  const valoresSomados = args.reduce((acumulador, itemAtual) => acumulador + itemAtual, 0);

  // Faz o cáculo da média em si e retorna.
  return (valoresSomados / args.length);
};

Então desse modo, na implementação já colocaria tudo em um array, então não faria muito sentido permitir o usuário mandar um array de valores ou apenas os valores separados por vírgula, porque no final das contas, vai dar no mesmo.
Pensando assim, o método então receberia apenas os valores que o usuário gostaria de cácular a média e obviamente, todos tem de ser do tipo número.
O que acham, @lucaspompeun e @leonelsanchesdasilva ?

A implementação considerando número variável de argumentos é possível, mas vai aumentar o tratamento dos argumentos.

Nada me impediria, por exemplo, de passar uma série indefinida de arrays numéricos, o que já faria o método falhar na hora de fazer a redução. Um .flat() de todos os arrays antes teria que ser feito.

Eu faria media() apenas aceitando um vetor único de números. Se houver necessidade de implementar uma versão mais robusta, isso pode ser feito depois.

Eu estava fazendo exatamente isso. Estava tentando implementar desse jeito aí, e cara, terei que fazer vários tratamentos nos argumentos. No momento, talvez não seja necessário mesmo. Concordo em aceitar apenas o array. O que acha, Pompeu?

from egua.

lucaspompeun avatar lucaspompeun commented on May 20, 2024 1

Podemos ficar com o argumento único de array.

from egua.

barbozafernando avatar barbozafernando commented on May 20, 2024

@lucaspompeun, essa média seria o cálculo de média normal mesmo, né? Tipo, se eu passo 5 valores, somo todos e divido por 5. Seria isso?

from egua.

lucaspompeun avatar lucaspompeun commented on May 20, 2024

Acho perfeito fazer os dois.

from egua.

barbozafernando avatar barbozafernando commented on May 20, 2024

Mas pensando aqui, Pompeu. Cara, mas será que se fizer dos dois jeitos, não vai dar na mesma? Vou te mostrar o porquê.

module.exports.media = function () {
  // Pega cada item que veio por parâmetro e coloca em uma posição diferente em um array.
  const args = [...arguments];

  // Soma todos os itens.
  const valoresSomados = args.reduce((acumulador, itemAtual) => acumulador + itemAtual, 0);

  // Faz o cáculo da média em si e retorna.
  return (valoresSomados / args.length);
};

Então desse modo, na implementação já colocaria tudo em um array, então não faria muito sentido permitir o usuário mandar um array de valores ou apenas os valores separados por vírgula, porque no final das contas, vai dar no mesmo.
Pensando assim, o método então receberia apenas os valores que o usuário gostaria de cácular a média e obviamente, todos tem de ser do tipo número.

O que acham, @lucaspompeun e @leonelsanchesdasilva ?

from egua.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.