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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c94e555e4fb775e5908d73c876ae01df49044891e0f3889d854373a2d1ecce21
4
- data.tar.gz: 73390be3f09386c6f0e7b44ea74424c6d23232b0b851503abdbc4efd59260429
3
+ metadata.gz: db5233953a2baa9d25e7ade8ae61e6a6d7798a68597e3e991e43e0ef7be8351a
4
+ data.tar.gz: 0eb8abedb6d52038cbe47e8835c7933c66d840bb9897b066a302efe2d35c1393
5
5
  SHA512:
6
- metadata.gz: 1def9e144031ca2a421bb7ad5e91fc750dbb1f982868a6284dbcae1d6ad33fd2149c1bd9e67da621da61793dfa3ebca88abc13717baa103bbb3f819fc1a67498
7
- data.tar.gz: 42d9c0db22c9d03209f78010c2a0f7171379816a9e52de71d673ce919c0d11d169f5d4a2b59f5d3962d4f466c0cabd23596f076cda3b26145aad0eadeb6cd828
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,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.1
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-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.3.5
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