[RUBY] J'ai essayé de créer divers programmes de séquence de nombres tels que le numéro Koratz, le numéro Fibonatch, le numéro Triangle

Je me demande s'il y a quelque chose que je peux poster sur Qiita. J'ai déterré le script quand j'ai essayé Project Euler il y a plus de 6 ans, donc Écrivez-le (2e)

L'environnement d'exécution est le suivant. ruby 2.6.3p62 macOS Catalina 10.15.6 zsh

Générer un certain nombre de collats

・ S'il est pair, divisez par 2. ・ Pour les nombres impairs, multipliez par 3 et ajoutez 1. Une séquence de nombres qui va comme ça. Ce n'est pas parce que le nombre est grand que la séquence de nombres devient longue, ce qui est étrange. Voir ci-dessous pour une explication détaillée et précise. 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)

Le résultat sera le suivant.

% 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]

Générer une séquence de Fibonacci

Séquence de nombres dans laquelle un nombre arbitraire est la somme du nombre qui le précède et du nombre qui le précède. Impression que cela apparaît souvent comme un problème du programme à côté du pétillement et du buzz. Voir ci-dessous pour une explication détaillée et précise. 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)

Le résultat de l'exécution est le suivant.

% 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]

Générer un nombre triangulaire

C'est une suite de nombres qui augmente comme +2, +3, +4, +5, .... En ce qui concerne le nombre de points, il semble être appelé un nombre triangulaire car il est disposé dans un triangle régulier. C'est à la mode. Voir ci-dessous pour une explication détaillée et précise. 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)

Le résultat de l'exécution est le suivant.

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]

c'est tout.

Recommended Posts

J'ai essayé de créer divers programmes de séquence de nombres tels que le numéro Koratz, le numéro Fibonatch, le numéro Triangle
J'ai essayé de faire divers programmes de nombre d'amitié, nombre parfait, nombre excessif, nombre de pénurie, nombre de fois
J'ai fait diverses fonctions de la séquence de Fibonacci (Ruby)
J'ai essayé de faire une authentification de base avec Java
J'ai essayé de créer une fonction de connexion avec Java
J'ai essayé node-jt400 (Programmes)
J'ai essayé de faire une demande en 3 mois d'inexpérimenté
J'ai essayé de faire de Ben figure une animation GIF facile à comprendre
J'ai essayé de faire coexister Java Optional et la clause de garde
J'ai créé un client RESAS-API en Java
J'ai essayé de vérifier yum-cron
[Unity] J'ai essayé de créer un plug-in natif UniNWPathMonitor en utilisant NWPathMonitor
J'ai essayé de créer une application Android avec MVC maintenant (Java)
J'ai essayé d'en faire une URL arbitraire en utilisant l'imbrication de routage
[Java] J'ai essayé de faire un labyrinthe par la méthode de creusage ♪
J'ai essayé de faire un Numeron qui n'est pas bon avec Ruby
J'ai essayé de créer une fonction de groupe (babillard) avec Rails
J'ai essayé de mâcher C # (indexeur)
J'ai essayé d'interagir avec Java
J'ai essayé d'expliquer la méthode
J'ai essayé de résumer l'apprentissage Java (1)
J'ai essayé de résumer Java 8 maintenant
C # (polymorphisme: polymorphisme)
J'ai essayé d'expliquer Active Hash
J'ai essayé de créer une classe parent d'objet de valeur dans Ruby
J'ai essayé de créer une simple application Android de reconnaissance faciale en utilisant OpenCV
[iOS] J'ai essayé de créer une application de traitement de type insta avec Swift
J'ai essayé de créer une API Web qui se connecte à DB avec Quarkus
J'ai essayé de créer mon propre guide de transfert en utilisant OpenTrip Planner et GTFS
J'ai créé un bot de transaction d'arbitrage de monnaie virtuelle et essayé de gagner de l'argent
J'ai essayé d'utiliser pleinement le cœur du processeur avec Ruby
J'ai essayé de créer une application de conversation en Java à l'aide de l'IA «A3RT»