/ / Besoin d'aide avec des boucles - rubis, boucles

Besoin d'aide avec des boucles - rubis, boucles

J'ai besoin d'une boucle dans ce modèle. J'ai besoin d'une boucle infinie produisant un numéro commençant par 1.

1,10,11,12..19,100,101,102..199,1000,1001.......

Réponses:

2 pour la réponse № 1
INFINITY = 1.0 / 0.0
0.upto(INFINITY) do |i|
((10**i)...(2*10**i)).each{|e| puts e }
end

Bien sûr, je ne voudrais pas exécuter ce code.


5 pour la réponse № 2
def numbers_that_start_with_1
return enum_for(:numbers_that_start_with_1) unless block_given?

infty = 1.0 / 0.0
(0..infty).each do |i|
(0 .. 10**i - 1).each do |j|
yield(10**i + j)
end
end
end

numbers_that_start_with_1.first(20)
#=>  [1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 100, 101, 102, 103, 104, 105, 106, 107, 108]

1 pour la réponse № 3
i = 1
loop do
for j in 0...i
puts i+j
end
i *= 10
end

0 pour la réponse № 4

Les énumérateurs sont bons pour des choses comme ça. Cependant, j'étais paresseux et j'ai juste décidé de voir si la représentation de chaîne commence par 1 et itère par 1 à la fois. Cela signifie qu'il sera lent et qu'il y aura des pauses énormes pendant qu'il passe de 1 999 999 à 10 000 000.

#!/usr/bin/env ruby

start_with_1 = Enumerator.new do|y|
number = 1
loop do
while number.to_s[0] != "1"
number += 1
end

y.yield number
number += 1
end
end

start_with_1.each do|n|
puts n
end

0 pour la réponse № 5

Pas mieux, juste différent ...

def nbrs_starting_with_one(nbr=1)
(nbr...2*nbr).each {|i| puts i}
nbrs_starting_with_one(10*nbr)
end