algorithms_basic 0.0.1 → 1.0.0

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: fe4797a9f768beeae2279dacc0ea49bff559c4cac8b67fb24fc4806121acafb3
4
- data.tar.gz: 8f8ca25e22f23184a4f6b328d069dc42bd8c7cfc6b99394599cf48f8e8c9dbef
3
+ metadata.gz: 401c6eb7a5467ce6ee82504d635a5fd47a28a87283237b61e9957134ebf6f4c4
4
+ data.tar.gz: ecf39c29e86a529bef2e2a0129977dc0ec181310c5882366f58988371befcc97
5
5
  SHA512:
6
- metadata.gz: f23e0783619d3f12551da9ef8e04b36e0746eb2d2d3027ddaee8f155e164a8360497e18b3e5f59430c794077a8d245427bcf8bf6d081e7690101d9b4bc2a671c
7
- data.tar.gz: facdef8bc5ef4b528253fcd603ab477ab23e3f1a5e90a96eed7417c9fc5ee2acb11bb9f5ee20e90c05019070ba4682a1c251f9cf441eeccdbb458e3aaf18e8e6
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
@@ -1,3 +1,4 @@
1
+
1
2
  class Array
2
3
  def split_by_parity
3
4
  partition(&:even?)
@@ -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,25 +1,45 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: algorithms_basic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Victor Oliveira
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-08-16 00:00:00.000000000 Z
11
+ date: 2023-08-20 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description:
14
- email:
13
+ description: This gem was created with the intention of developing my skills as a
14
+ programmer and also provides help for beginners and precisely improve their logic.
15
+ email:
16
+ - victorsamueloliveira59@gmail.com
15
17
  executables: []
16
18
  extensions: []
17
19
  extra_rdoc_files: []
18
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
19
34
  - lib/algorithms_basic.rb
20
- homepage:
21
- licenses: []
22
- metadata: {}
35
+ - lib/ruby_version.rb
36
+ - lib/ruby_version/version.rb
37
+ homepage: https://github.com/victoroliveira59/gem_algorithms_criation
38
+ licenses:
39
+ - MIT
40
+ metadata:
41
+ allowed_push_host: https://rubygems.org
42
+ source_code_uri: https://github.com/victoroliveira59/gem_algorithms_criation
23
43
  post_install_message:
24
44
  rdoc_options: []
25
45
  require_paths:
@@ -28,7 +48,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
28
48
  requirements:
29
49
  - - ">="
30
50
  - !ruby/object:Gem::Version
31
- version: '0'
51
+ version: 3.0.2
32
52
  required_rubygems_version: !ruby/object:Gem::Requirement
33
53
  requirements:
34
54
  - - ">="