[RUBY] Ich habe versucht, verschiedene Nummernfolgeprogramme wie Koratz-Nummer, Fibonatch-Nummer, Dreieck-Nummer zu erstellen

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 Schreiben Sie es (2.)

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

Generieren Sie eine Reihe von Collats

・ Wenn es gerade ist, teilen Sie durch 2. ・ Für ungerade Zahlen mit 3 multiplizieren und 1 addieren. Eine Folge von Zahlen, die so aussieht. Nur weil die Zahl groß ist, heißt das nicht, dass die Zahlenfolge lang wird, was seltsam ist. Unten finden Sie eine detaillierte und genaue Erklärung. https://ja.wikipedia.org/wiki/コラッツの問題

collatz_number.rb


def get_collatz_next_number(num)
    if num.even? then
        return num / 2
    elsif num == 1 then
        return nil
    else
        return (num * 3) + 1
    end
end
def create_collatz_sequence(num)
    cltz_ary = Array.new

    new_num = num
	cltz_ary.push new_num

    new_num = get_collatz_next_number(new_num)
	while !(new_num.nil?) do 
		cltz_ary.push new_num
        new_num = get_collatz_next_number(new_num)
	end
	
	return cltz_ary
end

p create_collatz_sequence (26)
p "===="
p create_collatz_sequence (27)
p "===="
p create_collatz_sequence (28)
p "===="
p create_collatz_sequence (1652)

Das Ergebnis ist wie folgt.

% ruby collatz_number.rb
[26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1]
"===="
[27, 82, 41, 124, 62, 31, 94, 47, 142, 71, 214, 107, 322, 161, 484, 242, 121, 364, 182, 91, 274, 137, 412, 206, 103, 310, 155, 466, 233, 700, 350, 175, 526, 263, 790, 395, 1186, 593, 1780, 890, 445, 1336, 668, 334, 167, 502, 251, 754, 377, 1132, 566, 283, 850, 425, 1276, 638, 319, 958, 479, 1438, 719, 2158, 1079, 3238, 1619, 4858, 2429, 7288, 3644, 1822, 911, 2734, 1367, 4102, 2051, 6154, 3077, 9232, 4616, 2308, 1154, 577, 1732, 866, 433, 1300, 650, 325, 976, 488, 244, 122, 61, 184, 92, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1]
"===="
[28, 14, 7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1]
"===="
[1652, 826, 413, 1240, 620, 310, 155, 466, 233, 700, 350, 175, 526, 263, 790, 395, 1186, 593, 1780, 890, 445, 1336, 668, 334, 167, 502, 251, 754, 377, 1132, 566, 283, 850, 425, 1276, 638, 319, 958, 479, 1438, 719, 2158, 1079, 3238, 1619, 4858, 2429, 7288, 3644, 1822, 911, 2734, 1367, 4102, 2051, 6154, 3077, 9232, 4616, 2308, 1154, 577, 1732, 866, 433, 1300, 650, 325, 976, 488, 244, 122, 61, 184, 92, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1]

Generieren Sie eine Fibonacci-Sequenz

Eine Folge von Zahlen, bei der eine beliebige Zahl die Summe der Zahl davor und der Zahl davor ist. Eindruck, dass es oft als Problem des Programms neben Fizz und Buzz erscheint. Unten finden Sie eine detaillierte und genaue Erklärung. https://ja.wikipedia.org/wiki/フィボナッチ数

fibonacci_sequence.rb


def create_fibonacci_sequence( term1, term2, max_term)
	fibo_ary = Array.new
	fibo_ary.push term1
	fibo_ary.push term2
	
	new_num = 0
	i = 2
	new_num = fibo_ary[i-1] + fibo_ary[i-2]
	while new_num <= max_term do 
		fibo_ary.push new_num
		i += 1
		new_num = fibo_ary[i-1] + fibo_ary[i-2]
	end
	
	return fibo_ary
end

p create_fibonacci_sequence(0,1,10946)

Das Ausführungsergebnis ist wie folgt.

% ruby fibonacci_sequence.rb
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946]

Generieren Sie eine dreieckige Zahl

Es ist eine Folge von Zahlen, die mit +2, +3, +4, +5, ... zunimmt. Wenn es um die Anzahl der Punkte geht, scheint es eine Dreieckszahl zu sein, da es in einem regelmäßigen Dreieck angeordnet ist. Es ist in Mode. Unten finden Sie eine detaillierte und genaue Erklärung. https://ja.wikipedia.org/wiki/三角数

triangle_number.rb


def create_triangle_number (max_number)
    terms = Array.new
    
    i = 0
    current_number = 1
    while current_number <= max_number do
        terms.push current_number
        i += 1
        current_number = terms[i - 1] + i + 1
    end
    
    return terms
end

p create_triangle_number (1000)

Das Ausführungsergebnis ist wie folgt.

ruby triangle_number.rb   
[1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120, 136, 153, 171, 190, 210, 231, 253, 276, 300, 325, 351, 378, 406, 435, 465, 496, 528, 561, 595, 630, 666, 703, 741, 780, 820, 861, 903, 946, 990]

das ist alles.

Recommended Posts

Ich habe versucht, verschiedene Nummernfolgeprogramme wie Koratz-Nummer, Fibonatch-Nummer, Dreieck-Nummer zu erstellen
Ich habe versucht, verschiedene Programme wie Freundschaftsnummer, perfekte Nummer, überschüssige Nummer, Mangelzahl, Anzahl der Male zu machen
Ich habe verschiedene Funktionen der Fibonacci-Sequenz (Ruby) erstellt.
Ich habe versucht, eine Standardauthentifizierung mit Java durchzuführen
Ich habe versucht, eine Anmeldefunktion mit Java zu erstellen
Ich habe versucht, node-jt400 (Programme)
Ich habe versucht, innerhalb von 3 Monaten einen Antrag von unerfahren zu stellen
Ich habe versucht, Ben zu einer leicht verständlichen GIF-Animation zu machen
Ich habe versucht, Java Optional und Guard-Klausel koexistieren zu lassen
Ich habe einen RESAS-API-Client in Java erstellt
Ich habe versucht, yum-cron zu verifizieren
[Unity] Ich habe mit NWPathMonitor ein natives Plug-In UniNWPathMonitor erstellt
Ich habe versucht, eine Android-Anwendung mit MVC zu erstellen (Java)
Ich habe versucht, mithilfe von Routing-Verschachtelung eine beliebige URL zu erstellen
[Java] Ich habe versucht, mit der Grabmethode ein Labyrinth zu erstellen ♪
Ich habe versucht, einen Numeron zu erstellen, der mit Ruby nicht gut ist
Ich habe versucht, mit Rails eine Gruppenfunktion (Bulletin Board) zu erstellen
Ich habe versucht, C # (Indexer) zu kauen.
Ich habe versucht, mit Java zu interagieren
Ich habe versucht, die Methode zu erklären
Ich habe versucht, das Java-Lernen zusammenzufassen (1)
Ich habe jetzt versucht, Java 8 zusammenzufassen
C # (Polymorphismus: Polymorphismus)
Ich habe versucht, Active Hash zu erklären
Ich habe versucht, ein übergeordnetes Wertklasseobjekt in Ruby zu erstellen
Ich habe versucht, eine einfache Gesichtserkennungs-Android-Anwendung mit OpenCV zu erstellen
[iOS] Ich habe versucht, mit Swift eine insta-ähnliche Verarbeitungsanwendung zu erstellen
Ich habe versucht, eine Web-API zu erstellen, die mit Quarkus eine Verbindung zur Datenbank herstellt
Ich habe versucht, mit OpenTrip Planner und GTFS eine eigene Übertragungsanleitung zu erstellen
Ich habe einen Arbitrage-Transaktionsbot für virtuelle Währungen erstellt und versucht, Geld zu verdienen
Ich habe versucht, den CPU-Kern mit Ruby voll auszunutzen
Ich habe versucht, mit AI "A3RT" eine Talk-App in Java zu erstellen.