Este projeto é uma solução para os desafios do curso de Desenvolvimento Backend em Ruby da FAP/Softex. Os desafios consistiam em:
- Receber números inteiros e armazená-los em um vetor.
- Ordenar o vetor utilizando o algoritmo Bubble Sort.
Como uma implementação adicional, foi incluída a classe Levenshtein
, que calcula a distância de Levenshtein entre duas strings.
O projeto implementa as seguintes funcionalidades:
- Coleta de Números Inteiros: Permite ao usuário inserir números inteiros.
- Comando de Saída: Permite ao usuário encerrar a coleta digitando o comando "sair".
- Validação de Entrada: Identifica entradas não numéricas e sugere correções.
- Ordenação: Ordena os números coletados utilizando o algoritmo Bubble Sort.
- Exibição de Resultados: Exibe progressivamente os números coletados e o resultado final da ordenação.
- Distância de Levenshtein (Implementação Adicional): Calcula a distância de Levenshtein entre strings para ajudar na validação de entrada.
-
Classe
IntegerCollector
- Solicita a entrada do usuário para números inteiros ou comando "sair".
- Valida se a entrada é um número inteiro ou um comando.
- Armazena números inteiros em uma lista.
- Encerra a coleta e exibe os números ao digitar "sair".
- Exibe uma mensagem de erro para entradas inválidas.
- Ordena os números utilizando a classe
Algorithm::Sorted
. - Mostra a ordenação de forma progressiva.
- Limpa o terminal para uma visualização mais clara.
-
Classe
Algorithm::Sorted
- Implementa o algoritmo de ordenação por bolha (Bubble Sort).
- Permite a execução de um bloco de código durante a ordenação para feedback visual.
-
Classe
Algorithm::Levenshtein
(Implementação Adicional)- Calcula a distância de Levenshtein entre duas strings.
- Utiliza a matriz de distâncias para calcular o número mínimo de operações de edição necessárias para transformar uma string na outra.
-
Clone o Repositório
git clone https://github.com/SilvioCavalcantiBonfim/integer-collector
-
Navegue até o Diretório do Projeto
cd integer-collector
-
Execute o Programa
ruby main.rb
-
Insira Números Inteiros
- Digite números inteiros e pressione Enter para adicionar.
- Continue inserindo números conforme desejado.
-
Finalize a Coleta
- Digite
sair
e pressione Enter para encerrar o programa.
- Digite
-
Visualize os Resultados
- O programa exibirá os números coletados e a lista ordenada.
Digite o 1º número inteiro ou escreva sair para finalizar: 5
Digite o 2º número inteiro ou escreva sair para finalizar: 3
Digite o 3º número inteiro ou escreva sair para finalizar: 8
Digite o 4º número inteiro ou escreva sair para finalizar: sair
Os números escolhidos foram: 5, 3, 8
◐ Ordenando... [5, 3, 8]
◓ Ordenando... [3, 5, 8]
Ordenado: [3, 5, 8]
A classe Levenshtein
calcula a distância de Levenshtein entre duas strings. A distância de Levenshtein é uma medida de diferença entre duas sequências, calculando o número mínimo de operações de edição (inserção, exclusão ou substituição) necessárias para transformar uma string na outra.
Exemplo de uso:
levenshtein = Algorithm::Levenshtein.new("kitten", "sitting")
puts levenshtein.distance # => 3
A classe Sorted
implementa o algoritmo de ordenação por bolha (Bubble Sort). Permite a execução de um bloco de código durante a ordenação para feedback visual.
Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.
Projeto desenvolvido como parte do curso de Desenvolvimento Backend em Ruby da FAP/Softex.