# Calcul du terme suivant # -------------------------- def suiv_collatz(n) return n/2 if n%2==0 return 3*n+1 end # Calcule la suite jusqu'à tomber sur 1 # -------------------------------------- def suite_collatz(n) t=[] t<max end return max end # Indique la durée d'un vol en altitude # -------------------------------------- def duree_vol_altitude(vol) return vol.index {|x| x=vol[0]} end # Méthode de démonstration # -------------------------------- def demo_collatz puts "Suite de Collatz : Démonstration" puts "================================" [15,241].each do |n| puts "Calcul du vol #{n}" t=suite_collatz(n) p t if t.size<100 puts "Durée de vol : #{t.size}" puts "Altitude : #{t.max}" puts "Durée vol en altitude : #{duree_vol_altitude(t)}" puts "Durée vol avant chute : #{duree_vol_avant_chute(t)}" puts "----------------------------------------------------" end end