algorithms_basic 0.1.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/Algoritimos_fase1/Exercise.rb +43 -0
- data/lib/Algoritimos_fase1/array_reversal.rb +20 -0
- data/lib/Algoritimos_fase1/binary_search.rb +15 -0
- data/lib/Algoritimos_fase1/bubble_sort.rb +21 -0
- data/lib/Algoritimos_fase1/counting_sort.rb +33 -0
- data/lib/Algoritimos_fase1/debug_codigos.rb +19 -0
- data/lib/Algoritimos_fase1/exemplo_maximum.rb +17 -0
- data/lib/Algoritimos_fase1/greedy_algorithm.rb +22 -0
- data/lib/Algoritimos_fase1/linear_search.rb +16 -0
- data/lib/Algoritimos_fase1/maximiu_array.rb +23 -0
- data/lib/Algoritimos_fase1/minimum_spanning.rb +0 -0
- data/lib/Algoritimos_fase1/ordanition_name.rb +8 -0
- data/lib/Algoritimos_fase1/search_binary_teste.rb +35 -0
- data/lib/ruby_version/version.rb +4 -0
- data/lib/ruby_version.rb +12 -0
- metadata +19 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: db5233953a2baa9d25e7ade8ae61e6a6d7798a68597e3e991e43e0ef7be8351a
|
4
|
+
data.tar.gz: 0eb8abedb6d52038cbe47e8835c7933c66d840bb9897b066a302efe2d35c1393
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 510c21c4c3c0a92261789644f6db9d19cf8f588efb35edf28a580d04f5f96be25f277ca7196181b3d1c14705fe8f746f83214ccd6d9e8e61cb1bf0c3d5ee77ef
|
7
|
+
data.tar.gz: c4b7d9da1948fdaf6ad34112155f22487565ffc9c94fb67defb1b661e58d12ce22b712cd3842aaed093fe9fee36b77d7ffe3f82e7b863a456f1da0d95353659b
|
@@ -0,0 +1,43 @@
|
|
1
|
+
def search (arr)
|
2
|
+
arr.min
|
3
|
+
end
|
4
|
+
|
5
|
+
def ordenation (list)
|
6
|
+
list.count
|
7
|
+
end
|
8
|
+
|
9
|
+
def negativos (num)
|
10
|
+
new_array = []
|
11
|
+
num.each_with_index do |_, i | #Negativando os numeros de um array, os que são positivos viram negativos e vice versa
|
12
|
+
new_array << num[i] * -1
|
13
|
+
end
|
14
|
+
new_array
|
15
|
+
end
|
16
|
+
|
17
|
+
def verificar_list (numb) # Essa função verifica se todos os elementos da lista são pares se for imprimi true senão false
|
18
|
+
numb.none? do |element|
|
19
|
+
element.even?
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def deletado (enum)
|
24
|
+
numeros = enum.dup #Usado o (.dup) para fazer uma cópia do array original
|
25
|
+
numeros.delete_at(2) # Utilizamos o delete_at() para deletar um elemento com base no seu indice
|
26
|
+
numeros
|
27
|
+
end
|
28
|
+
# lista = [31, 49, 1, 2, 7, 9]
|
29
|
+
|
30
|
+
# menor = search(lista)
|
31
|
+
# puts menor
|
32
|
+
#
|
33
|
+
# contador = ordenation(lista)
|
34
|
+
# puts contador
|
35
|
+
#
|
36
|
+
# negativo = negativos(lista)
|
37
|
+
# print negativo
|
38
|
+
|
39
|
+
# resultado = verificar_list(lista)
|
40
|
+
# puts resultado
|
41
|
+
|
42
|
+
# new_result = deletado(lista)
|
43
|
+
# print new_result
|
@@ -0,0 +1,20 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
def reversal(arr, start, fim)
|
4
|
+
while start < fim
|
5
|
+
arr[start],arr[fim] = arr[fim], arr[start]
|
6
|
+
start += 1
|
7
|
+
fim -= 1
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def rothate(arr ,d, n)
|
12
|
+
reversal(arr, 0, n - 1)
|
13
|
+
reversal(arr, 0, d - 1)
|
14
|
+
reversal(arr, d, n - 1)
|
15
|
+
end
|
16
|
+
array = [1,2,3,4,5,6,7,8,9,10]
|
17
|
+
array.length
|
18
|
+
k = 3
|
19
|
+
rothate(array, k, array.length)
|
20
|
+
print array.inspect
|
@@ -0,0 +1,15 @@
|
|
1
|
+
def binary_search (arr,target)
|
2
|
+
arr.bsearch { |x| x >= target} #Essa função faz a pesquisa binária
|
3
|
+
end
|
4
|
+
|
5
|
+
|
6
|
+
arr = (10..100).to_a
|
7
|
+
print "Insira um valor para saber se está na lista: "
|
8
|
+
target = 99
|
9
|
+
result = binary_search(arr,target)
|
10
|
+
|
11
|
+
if result
|
12
|
+
puts "valor encontrado: #{}"
|
13
|
+
else
|
14
|
+
puts "Valor não encontrado!"
|
15
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
class Bublle_sort
|
2
|
+
attr_accessor :arr
|
3
|
+
def initialize
|
4
|
+
@arr = arr
|
5
|
+
end
|
6
|
+
|
7
|
+
def bubble_sort(arr)
|
8
|
+
arr.each_index do |i|
|
9
|
+
max_index = arr[i..-1].each_with_index.min_by { |num, _| num }[1] + i
|
10
|
+
arr[i], arr[max_index] = arr[max_index], arr[i]
|
11
|
+
true
|
12
|
+
end
|
13
|
+
arr
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
lista = [9,2,6,3,7,1,-3,-8]
|
18
|
+
result = Bublle_sort.new
|
19
|
+
print result.bubble_sort(lista)
|
20
|
+
|
21
|
+
# puts "Minha lista ficou ordenada da seguinte forma: #{result.inspect}"
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# O algoritimo counting sort é baseado em três arrays
|
2
|
+
|
3
|
+
def counting_sort(arr)
|
4
|
+
|
5
|
+
max_value = 7 #Essa linha indica que meu array deve ter no máximo 7 indices(0 a 6)
|
6
|
+
count = Array.new(max_value, 0)
|
7
|
+
|
8
|
+
# O loop abaixo calcula a frequência de repetição dos arrays em um novo array(count) que armazena a repetição de cada número em seu indice
|
9
|
+
arr.each do |element|
|
10
|
+
count[element - 1] += 1 #Está linha verifica cada elemento e se houver uma repetição incrementa mais 1 ao indice do elemento
|
11
|
+
end
|
12
|
+
|
13
|
+
# As linhas abaixo faz uma soma de acumulativo a partir do primeiro indice
|
14
|
+
count.each_with_index do |_, i|
|
15
|
+
next if i == 0 #condição para iniciar a partir do primeiro indice
|
16
|
+
count[i] += count[i - 1] #Calculo para calcular o indice atual mais o indice anterior
|
17
|
+
end
|
18
|
+
|
19
|
+
array_b = Array.new(0) #Inicia o terceiro array
|
20
|
+
|
21
|
+
(arr.length - 1).downto(0) do |i| #Loop para percorrer o array de trás para frente
|
22
|
+
array_b[count[arr[i] - 1] - 1] = arr[i] # Essa linha está pedindo para poder ir no array principal(arr) pegar o ultimo numero desse array e comparar com o array(count)
|
23
|
+
# armazenar o numero correspondente do array(arr) baseado no numero do array(count) decrementado em menos 1 e armazenar no indice correspondente do array_b
|
24
|
+
count[arr[i]-1] -= 1 # <= E a linha ao lado decrementa o número do indice usado na operação anterior em menos 1 par que se array(arr) tiver um numero repetido ele é armazenado no indice anterior
|
25
|
+
end
|
26
|
+
array_b
|
27
|
+
end
|
28
|
+
|
29
|
+
lista = [3,2,4,7,4,7,1,2,3]
|
30
|
+
|
31
|
+
result = counting_sort(lista)
|
32
|
+
|
33
|
+
puts "O resultado do coutintg sort é #{result}"
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
pasta_codigo = "/home/victoroliveira59/Documentos/Github/Ruby/Desenvolvendo_me_/Algoritimos_fase1"
|
4
|
+
|
5
|
+
# Percorre todos os arquivos da pasta "Código"
|
6
|
+
Dir.foreach(pasta_codigo) do |nome_arquivo|
|
7
|
+
caminho_arquivo = File.join(pasta_codigo, nome_arquivo)
|
8
|
+
|
9
|
+
# Verifica se é um arquivo JSON
|
10
|
+
if File.file?(caminho_arquivo) && nome_arquivo.end_with?('.json')
|
11
|
+
# Realize o debug com o arquivo JSON
|
12
|
+
json_data = File.read(caminho_arquivo)
|
13
|
+
dados = JSON.parse(json_data)
|
14
|
+
|
15
|
+
# Faça o que precisar com os dados do arquivo JSON
|
16
|
+
# Por exemplo, imprimir na tela:
|
17
|
+
puts dados
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
#noinspection RubyScope
|
2
|
+
def greedy (recebido, valor)
|
3
|
+
|
4
|
+
moeda = [1, 5, 10, 25, 50]
|
5
|
+
|
6
|
+
troco = Array.new(0)
|
7
|
+
troco_total = recebido - valor
|
8
|
+
|
9
|
+
while troco_total > 0
|
10
|
+
maior_moeda = moeda.select { |moeda| moeda <= troco_total}.max
|
11
|
+
troco << maior_moeda
|
12
|
+
troco_total -= maior_moeda
|
13
|
+
end
|
14
|
+
troco
|
15
|
+
end
|
16
|
+
|
17
|
+
recebido = gets.chomp.to_i
|
18
|
+
valor = gets.chomp.to_i
|
19
|
+
|
20
|
+
result = greedy(recebido, valor)
|
21
|
+
|
22
|
+
print result
|
@@ -0,0 +1,16 @@
|
|
1
|
+
array = (10..100).to_a
|
2
|
+
|
3
|
+
print "Insira um número: "
|
4
|
+
number = gets.chomp.to_i
|
5
|
+
|
6
|
+
found = false
|
7
|
+
|
8
|
+
array.each do |element|
|
9
|
+
if element == number
|
10
|
+
puts "Valor encontrado #{element}"
|
11
|
+
found = true
|
12
|
+
break
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
puts "Valor não encontrado" unless found
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# O
|
2
|
+
arr = [9,-8,8,3]
|
3
|
+
|
4
|
+
a = arr.sort #essa função ordena o array em ordem crescente
|
5
|
+
k = 3
|
6
|
+
|
7
|
+
a.each_with_index do |value, i|
|
8
|
+
if k > 0
|
9
|
+
if value < 0 #Condição do valor menor que 0, multiplica por -1 e vira positivo decrementando o meu valor de K
|
10
|
+
a[i] *= - 1
|
11
|
+
k -= 1
|
12
|
+
elsif value == 0
|
13
|
+
k = 0
|
14
|
+
break
|
15
|
+
elsif value > 0 #Quando o menor valor do array e maior que zero ele é multiplicado por menos 1 e o codigo é parado
|
16
|
+
a[i] *= - 1
|
17
|
+
break
|
18
|
+
else
|
19
|
+
break
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
puts a.sum # Todos os elementos são somados e retornando o resultado
|
File without changes
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# Este código representa a pesquisa binaria essa pesquisa só funciona quando a lista é ordenada a sua notação é log2n
|
2
|
+
|
3
|
+
def search(arr, target)
|
4
|
+
arr_init = 0
|
5
|
+
arr_fim = arr.length - 1 #Lê a quantidade de elementos decrementando
|
6
|
+
|
7
|
+
#Esse loop inicia com o inicio verificando se é menor que o fim
|
8
|
+
while arr_init <= arr_fim
|
9
|
+
mid = (arr_init + arr_fim) / 2 #Ele divide o a soma do inicio e o fim por 2
|
10
|
+
chute = arr[mid] # O resultado de mid é comparado pelo indice no array original e (chute passa a valer o numero indicado pelo indice)
|
11
|
+
|
12
|
+
if chute == target # Aqui e colocado uma condição para o valor obtido pela pesquisa comparando com o do usuario
|
13
|
+
return mid
|
14
|
+
elsif
|
15
|
+
chute > target
|
16
|
+
arr_fim = mid - 1 #Essa operação respresenta se o valor estiver acima, decrementa o valor obtido em mid e o arr_fim passa a ter o valor
|
17
|
+
else #Como a condição não foi solucionada volta ao inicio do loop
|
18
|
+
arr_init = mid + 1 # Nesta linha acontece que se o numero estiver a abaixo do chute e incrementado +1 a o arr_init
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
|
26
|
+
target = 11
|
27
|
+
|
28
|
+
result = search(array, target)
|
29
|
+
|
30
|
+
#Condição para saber se o valor foi enccontrado na lista ou não
|
31
|
+
if result
|
32
|
+
puts "valor encontrado na posição: #{result}"
|
33
|
+
else
|
34
|
+
puts "Valor não encontrado!"
|
35
|
+
end
|
data/lib/ruby_version.rb
ADDED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: algorithms_basic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Victor Oliveira
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-09-03 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: This gem was created with the intention of developing my skills as a
|
14
14
|
programmer and also provides help for beginners and precisely improve their logic.
|
@@ -18,7 +18,22 @@ executables: []
|
|
18
18
|
extensions: []
|
19
19
|
extra_rdoc_files: []
|
20
20
|
files:
|
21
|
+
- lib/Algoritimos_fase1/Exercise.rb
|
22
|
+
- lib/Algoritimos_fase1/array_reversal.rb
|
23
|
+
- lib/Algoritimos_fase1/binary_search.rb
|
24
|
+
- lib/Algoritimos_fase1/bubble_sort.rb
|
25
|
+
- lib/Algoritimos_fase1/counting_sort.rb
|
26
|
+
- lib/Algoritimos_fase1/debug_codigos.rb
|
27
|
+
- lib/Algoritimos_fase1/exemplo_maximum.rb
|
28
|
+
- lib/Algoritimos_fase1/greedy_algorithm.rb
|
29
|
+
- lib/Algoritimos_fase1/linear_search.rb
|
30
|
+
- lib/Algoritimos_fase1/maximiu_array.rb
|
31
|
+
- lib/Algoritimos_fase1/minimum_spanning.rb
|
32
|
+
- lib/Algoritimos_fase1/ordanition_name.rb
|
33
|
+
- lib/Algoritimos_fase1/search_binary_teste.rb
|
21
34
|
- lib/algorithms_basic.rb
|
35
|
+
- lib/ruby_version.rb
|
36
|
+
- lib/ruby_version/version.rb
|
22
37
|
homepage: https://github.com/victoroliveira59/gem_algorithms_criation
|
23
38
|
licenses:
|
24
39
|
- MIT
|
@@ -40,7 +55,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
40
55
|
- !ruby/object:Gem::Version
|
41
56
|
version: '0'
|
42
57
|
requirements: []
|
43
|
-
rubygems_version: 3.
|
58
|
+
rubygems_version: 3.2.22
|
44
59
|
signing_key:
|
45
60
|
specification_version: 4
|
46
61
|
summary: A gem to partition an array of integers based on parity
|