Skip to content

Instantly share code, notes, and snippets.

@terremoth
Last active December 10, 2023 12:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save terremoth/ddbf2a9d434b2acc2d7ffebdadd1d286 to your computer and use it in GitHub Desktop.
Save terremoth/ddbf2a9d434b2acc2d7ffebdadd1d286 to your computer and use it in GitHub Desktop.
Quando cobrar bruto por algo para saber quanto quer ganhar, sabendo que vai ter uma taxa de desconto em cima do preço
function quanto_cobrar(quanto_quero_ganhar, taxa_de_desconto) {
let i = 0;
function loop(valor) {
let resultado = parseFloat((valor - (valor * taxa_de_desconto)).toFixed(2));
let acrescentar = parseFloat((valor - resultado).toFixed(2));
if (i === 10) {return quanto_quero_ganhar + acrescentar;}i++;
if (resultado < quanto_quero_ganhar) {
return loop(quanto_quero_ganhar + acrescentar);
}
return quanto_quero_ganhar + acrescentar;
}
return loop(quanto_quero_ganhar);
}
console.log(quanto_cobrar(10000, 0.04)); // 10416.67
// "quero receber 10.000, mas terá uma taxa de 4% do governo, logo preciso
// cobrar 10416.67 bruto para obter 10.000 limpo
function quanto_cobrar(quanto_quero_ganhar, taxa_de_desconto = 4) {
const indice = 100/(100 - taxa_de_desconto);
return parseFloat((quanto_quero_ganhar * indice).toFixed(2));
}
// ou ainda em uma linha:
const quanto_cobrar = (q,t=4) => parseFloat((q * (100/(100 - t))).toFixed(2));
@terremoth
Copy link
Author

terremoth commented Dec 10, 2023

Esse caso, um algoritmo O(n²) pode ser otimizado e simplificado em formato de formula matemática, a ponto de virar um algoritmo simples, O(1), vejamos acima.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment