[RUBY] Ich habe versucht, verschiedene Programme wie Freundschaftsnummer, perfekte Nummer, überschüssige Nummer, Mangelzahl, Anzahl der Male zu machen

Ich frage mich, ob ich irgendetwas an Qiita posten kann. Ich habe das Skript ausgegraben, als ich vor mehr als 6 Jahren Project Euler ausprobiert habe Schreib es

Die Ausführungsumgebung ist wie folgt. ruby 2.6.3p62 macOS Catalina 10.15.6 zsh

:zero::one::two::three::four::five::six::seven::eight::nine::ten:

Generieren Sie einen Bruch

Bitte beziehen Sie sich auf das Folgende für diejenigen, die über die Nummer sind. https://ja.wikipedia.org/wiki/約数

divisor.rb


def create_divisor (num)
    divisor_ary = Array.new
    partner_divisor_ary = Array.new
    
    if num < 1 then
        return nil
    elsif num == 1 then
        divisor_ary.push 1
    else
        i = 1
        partner_divisor = 0
        until i == partner_divisor do
            if num % i == 0 then
                divisor_ary.push i
                partner_divisor = num / i
                if partner_divisor != i then
                    partner_divisor_ary.unshift partner_divisor
                else
                    break
                end
            end
            i += 1
        end
        divisor_ary += partner_divisor_ary
    end
    
    return divisor_ary
end

class Integer
	def divisor
		return create_divisor(self)
	end
end

p 8.divisor
p 128.divisor
p 12345.divisor

Das Ausführungsergebnis ist wie folgt.

% ruby divisor.rb
[1, 2, 4, 8]
[1, 2, 4, 8, 16, 32, 64, 128]
[1, 3, 5, 15, 823, 2469, 4115, 12345]

Generieren Sie Freundschaftsnummern

Anzahl der Freunde ... Ich denke, es ist ein guter Name mit viel Hintern. Als natürliche Zahlen a und b ・ Summe der Brüche von a -a = b Und, ・ Summe der Brüche von b-b = a Wenn es wird, scheinen a und b Freundschaftsnummern genannt zu werden. Unten finden Sie eine detaillierte und genaue Erklärung. https://ja.wikipedia.org/wiki/友愛数

number_amicable.rb


class Integer
	def divisor
		return create_divisor(self)
	end
    def amicable
        amicable_number = nil
        
        if self < 1 then
            return amicable_number
        end
        
        divisor_ary = self.divisor
        divisor_ary.pop
        unless divisor_ary.empty? then
            partner_number = divisor_ary.inject(:+)
            if partner_number != self then
                partner_divisor_ary = partner_number.divisor
                partner_divisor_ary.pop
                if partner_divisor_ary.inject(:+) == self then
                    amicable_number = partner_number
                end
            end
        end
        return amicable_number
    end
end

p 220.amicable
p 284.amicable
p 17296.amicable
p 18416.amicable
p 200.amicable

Das Ausführungsergebnis ist wie folgt.

% ruby number_amicable.rb
284
220
18416
17296
nil

Stellen Sie fest, ob es sich um eine vollständige Nummer, eine überschüssige Nummer oder eine Mangelnummer handelt

Als natürliche Zahl a (1) Wenn die Summe der Brüche = a * 2 ist, dann ist a die perfekte Zahl. (2) Wenn die Summe der Brüche> a * 2 ist, dann ist a eine reichlich vorhandene Zahl. (3) Wenn die Summe der Brüche <a * 2 ist, dann ist a die mangelhafte Zahl. wie es scheint. Unten finden Sie eine detaillierte und genaue Erklärung. https://ja.wikipedia.org/wiki/完全数 https://ja.wikipedia.org/wiki/過剰数 https://ja.wikipedia.org/wiki/不足数

number_p_a_d.rb


class Integer
	def divisor
		return create_divisor(self)
	end
	def compare_divisor_total
		sum_divisor = self.divisor.inject(:+)
		sum_divisor -= self
		if sum_divisor > self then
			return "abundant number"
		elsif sum_divisor == self then
			return "perfect number"
		else
			return "deficient number"
		end
	end
end

p 496.compare_divisor_total
p 20.compare_divisor_total
p 15.compare_divisor_total
p 1.compare_divisor_total

Das Ausführungsergebnis ist wie folgt.

% ruby number_p_a_d.rb
"perfect number"
"abundant number"
"deficient number"
"deficient number"

Bestimmen Sie, ob dies die Häufigkeit ist

Die Anzahl der Male ist die gleiche Anzahl, unabhängig davon, ob Sie von oben oder unten lesen. Unten finden Sie eine detaillierte und genaue Erklärung. https://ja.wikipedia.org/wiki/回文数

number_palindrome.rb


class Integer
	def palindrome?
		str = self.to_s
		if str[0, (str.length / 2).floor] == str.reverse[0, (str.length / 2).floor]
			return true
		else
			return false
		end
	end
end

p 341.palindrome?
p 121.palindrome?
p 3456543.palindrome?

Das Ausführungsergebnis ist wie folgt.

% ruby number_palindrome.rb
false
true
true

das ist alles.

:zero::one::two::three::four::five::six::seven::eight::nine::ten:

Recommended Posts

Ich habe versucht, verschiedene Programme wie Freundschaftsnummer, perfekte Nummer, überschüssige Nummer, Mangelzahl, Anzahl der Male zu machen
Ich habe versucht, verschiedene Nummernfolgeprogramme wie Koratz-Nummer, Fibonatch-Nummer, Dreieck-Nummer zu erstellen
Ich habe einen RESAS-API-Client in Java erstellt
Ich habe versucht, ein übergeordnetes Wertklasseobjekt in Ruby zu erstellen
Ich habe versucht, den CPU-Kern mit Ruby voll auszunutzen
Ich habe versucht, eine Standardauthentifizierung mit Java durchzuführen
C # (Grund der Kapselung)
Ich habe versucht, eine Nachrichtenfunktion der Rails Tutorial-Erweiterung (Teil 1) zu erstellen: Erstellen Sie ein Modell
05. Ich habe versucht, die Quelle von Spring Boot zu löschen
Ich habe versucht, die Kapazität von Spring Boot zu reduzieren
Ich habe versucht, eine Anmeldefunktion mit Java zu erstellen
Ich habe versucht, verschiedene link_to zusammenzufassen, die dieses Mal verwendet wurden
Ich habe versucht, eine Antwortfunktion für die Rails Tutorial-Erweiterung (Teil 3) zu erstellen: Ein Missverständnis der Spezifikationen wurde behoben
Ich habe versucht, die Beispielanwendung gemäß der Idee des Buches "Micro Service Architecture" in einen Mikrodienst zu verwandeln.
Ich habe versucht, eine Nachrichtenfunktion für die Erweiterung Rails Tutorial (Teil 2) zu erstellen: Erstellen Sie einen Bildschirm zum Anzeigen
Ich habe versucht, node-jt400 (Programme)
Ich habe versucht, die Grundlagen von Kotlin und Java zusammenzufassen
Ich möchte ein bestimmtes Modell von ActiveRecord ReadOnly erstellen
Ich habe versucht, Ben zu einer leicht verständlichen GIF-Animation zu machen
Ich habe versucht, dies und das von Spring @ Transactional zu überprüfen
Ich habe versucht, Java Optional und Guard-Klausel koexistieren zu lassen
Ich habe die grundlegende Grammatik von Ruby kurz zusammengefasst
Ich habe versucht, eine Umgebung mit WSL2 + Docker + VSCode zu erstellen
Ich habe versucht, mir zu erlauben, die Verzögerung für den Android UDP-Client einzustellen
[Rails] Implementierung einer mehrschichtigen Kategoriefunktion unter Verwendung der Abstammung "Ich habe versucht, ein Fenster mit Bootstrap 3 zu erstellen"
Ich habe eine App für maschinelles Lernen mit Dash (+ Docker) Teil 2 ~ Grundlegende Schreibweise für Dash ~ erstellt