algorithms_basic 0.1.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c94e555e4fb775e5908d73c876ae01df49044891e0f3889d854373a2d1ecce21
4
- data.tar.gz: 73390be3f09386c6f0e7b44ea74424c6d23232b0b851503abdbc4efd59260429
3
+ metadata.gz: 401c6eb7a5467ce6ee82504d635a5fd47a28a87283237b61e9957134ebf6f4c4
4
+ data.tar.gz: ecf39c29e86a529bef2e2a0129977dc0ec181310c5882366f58988371befcc97
5
5
  SHA512:
6
- metadata.gz: 1def9e144031ca2a421bb7ad5e91fc750dbb1f982868a6284dbcae1d6ad33fd2149c1bd9e67da621da61793dfa3ebca88abc13717baa103bbb3f819fc1a67498
7
- data.tar.gz: 42d9c0db22c9d03209f78010c2a0f7171379816a9e52de71d673ce919c0d11d169f5d4a2b59f5d3962d4f466c0cabd23596f076cda3b26145aad0eadeb6cd828
6
+ metadata.gz: f1b978f4e929db60b1a519724bc958a0b7eaa88ffb9c984302f8db3cb7ba778fcba86bcbf0d34ec16c9dee0c3483f7856be0b1009aba711302e78566eaca4536
7
+ data.tar.gz: 3ad6dc8f636bbae1d16b062b627c1205b572ea0bea4816965fa48830aa748ef2a423004262134254b81fbbe333dafd1e582150813c614f4cead5807c976d8e4d
@@ -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,17 @@
1
+ def maximum_sum(array, k)
2
+ array.sort!
3
+
4
+ while k.positive?
5
+ array[array.index(array.min)] = -array.min
6
+
7
+ k -= 1
8
+ end
9
+
10
+ array
11
+ end
12
+ #
13
+ # lista = [9,8,8,5]
14
+ # n = 3
15
+ #
16
+ # result = maximum_sum(lista,n)
17
+ # puts result
@@ -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,8 @@
1
+ def name (arr)
2
+ arr.sort
3
+ end
4
+
5
+ lista = %w[Carla José Maria Leandro Pablo Ana]
6
+
7
+ result = name(lista)
8
+ puts "Está é minha lista ordenada alfabética #{result}"
@@ -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
@@ -0,0 +1,4 @@
1
+
2
+ module StudyRuby
3
+ VERSION = "0.1.1"
4
+ end
@@ -0,0 +1,12 @@
1
+ require_relative "ruby_version/version"
2
+
3
+ module RubyVersion
4
+ class Error < StandardError; end
5
+ def teste_primeira_gem
6
+ "teste"
7
+ end
8
+ end
9
+
10
+ class String
11
+ include RubyVersion
12
+ end
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.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Victor Oliveira
8
8
  autorequire:
9
- bindir: exe
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2023-08-18 00:00:00.000000000 Z
11
+ date: 2023-08-20 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