É hora dos números com Ruby!

Mar 24 2023
Novamente ficando entediado com a programação ou precisa de algumas coisas novas para brincar com uma linguagem de programação mais legal? Sem dúvida , novamente estaríamos continuando a série com a frieza do Ruby . Vamos mergulhar mais uma vez no mundo dos números através do navio de rubi! Hmm, mesmo desde o ensino médio, tentamos encontrar fatores de um número manualmente, mas nunca pensamos em usar padrões comuns ou em qualquer bom algoritmo para a tarefa tediosa/chata.

Novamente ficando entediado com a programação ou precisa de algumas coisas novas para brincar com uma linguagem de programação mais legal?

Sem dúvida , novamente estaríamos continuando a série com a frieza do Ruby .

Vamos mergulhar mais uma vez no mundo dos números através do navio de rubi!

#Tempo dos Números#

Hmm, mesmo desde o ensino médio, tentamos encontrar fatores de um número manualmente, mas nunca pensamos em usar padrões comuns ou em qualquer bom algoritmo para a tarefa tediosa/chata.

Então, vamos ver como sua implementação pode ser mais legal na classe Ruby Integer :

class Integer
  def factors
    1.upto(Math.sqrt(self)).select {
      (self % _1).zero? 
    }.inject([]) {
      _1 << _2 << self / _2
    }.uniq.sort
  end
end

pp 450.factors #=> [1, 2, 3, 5, 6, 9, 10, 15, 18, 25, 30, 45, 50, 75, 90, 150, 225, 450]

  1. Então, em primeiro lugar, estamos definindo esse método de fatores dentro da classe Integer para que possamos usá-lo facilmente como Integer.factors .
  2. Dentro do método, primeiro percorremos (atravessamos) o número inteiro 1 até a raiz quadrada do número que queremos ter fatores de .
  3. Em seguida, filtramos a lista para obter apenas os números que podem dividir nosso número, ou seja, self usando “(self % _1).zero?” .
  4. Em seguida, o encadeamos com o método de injeção para injetar números na matriz de fatores usando “_1 << _2 << self / _2" onde _1 é a matriz de fatores _2 e self/_2 são os fatores dos números que devem ser inseridos isto .
  5. Por fim, usamos o método uniq e sort para retornar fatores exclusivos e classificados como uma matriz.