Skip to content

Ednilso/EURECICLO_avaliacao_dev_inicial

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Desafio de programação inicial

Dado um conjunto de garrafas d'água, com volumes de água diferentes entre si, e um galão de água. Crie um algoritmo, na linguagem que achar melhor, para escolher as garrafas a serem utilizadas para encher o galão, de acordo:

    1. O galão deve ser completamente preenchido com o volume das garrafas;
    1. Procure esvaziar totalmente as garrafas escolhidas;
    1. Quando não for possível esvaziar todas garrafas escolhidas, deixe a menor sobra possível;
    1. utilize o menor número de garrafas possível;

Resposta

Para resolver o problema proposto pelo desafio, utilizei a técnica do modelo matemático de "Subsequência", que consiste em construir uma subsequência derivada de outra sequência, excluindo alguns ou nenhum elemento, sem alterar a ordem dos elementos restantes. As subsequências podem conter elementos consecutivos, que não eram consecutivos na sequência original. A metodologia aplicada na subsequência consiste em uma execução consecutiva de elementos da sequência original, da esquerda para a direita. A aplicação desta metodologia supera, em velocidade, a técnica de combinação, visto que essa técnica possibilita a duplicação de elementos. Na metodologia da subsequência não há essa duplicação e o máximo de subsequências possíveis pode ser representado pela potência 2^n, sendo n o número de elementos da sequência principal. A solução apresenta o seguinte comportamento:

  • Solicita o volume do galão até que seja informado um valor acima de zero;
  • Solicita a quantidade de garrafas até que seja informado um valor acima de zero, e;
  • Solicita o volume individual de cada garrafa até que seja informado um valor acima de zero e que ele seja diferente dos valores informados anteriormente. Ao final da inserção das informações solicitadas, a execução do algorítimo é finalizada se o somatório dos volumes das garrafas for inferior ao conteúdo do galão.

Característica do algoritmo:

O algorítimo foi desenvolvimento na linguagem de programação Javascript para o ambiente Node.js.

Estrutura do algoritmo:

As principais rotinas do algorítimo são representadas pelas seguintes funções:

  • Função pegarDados();
    • Linha 20 a 24 - Responsável pela coleta das informações digitadas pelo usuário;
  • Função somaVolume();
    • Linha 26 a 32 - Responsável pelo cálculo do total dos volumes das subsequências;
  • Função selecionarVolumeGarrafaIdeal();
    • Linha 34 a 75 - Responsável pelo cálculo do total dos volumes das subsequências;
  • Função fnc();
    • Linha 47 a 70 - Função interna da função selecionarVolumeGarrafaIdeal() - Responsável pela aplicação da técnica Subsequência para identificar a subsequência que enche o galão com a menor sobra de volume nas garrafas e com o menor número de garrafas. A verificação é realizada por meio da combinação do volume das garrafas da esquerda para a direita. A técnica utilizada analisa todas as possibilidades sem realizar permutação ou combinação, o que resulta no número máximo de ciclo de repetição na potência de 2^n; e
  • Função start().
    • Linha 79 a 125 - Função principal - Responsável por controlar a sequência lógica de execução do algoritmo.

Executar o algoritmo

  • Clonar o repositório;
  • Instalar as dependências;
    • npm install
  • Execurar o algoritmo
    • npm start

About

Desafio de programação inicial elaborado pela Eureciclo

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published