92 votes

Créer un tableau de n éléments basé sur une valeur entière

Étant donné que j'ai une valeur entière de, par exemple, 10.

Comment puis-je créer un tableau de 10 éléments comme [1,2,3,4,5,6,7,8,9,10]?

2 votes

177voto

Michael Kohl Points 33345

Vous pouvez simplement étaler une plage:

[*1..10]
#=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Ruby 1.9 permet plusieurs étalements, ce qui est plutôt pratique:

[*1..3, *?a..?c]
#=> [1, 2, 3, "a", "b", "c"]

3 votes

C'est génial, parce que je n'avais pas réalisé avant que : [*0..0] #=> [0] Mais, [*1..0] #=> []

0 votes

@MichaelKohl - merci - que signifie le point d'interrogation ? avant les lettres ci-dessus ?

2 votes

Il s'agit de littéraux de caractères. ?c == 'c' #=> true

36voto

Encore une autre façon délicate:

> Array.new(10) {|i| i+1 }
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

10voto

Flextra Points 964

A propos des commentaires avec des méthodes astucieuses :

require 'benchmark'

Benchmark.bm { |x|
  x.report('[*..] ') do
    [*1000000 .. 9999999]
  end  

  x.report('(..).to_a') do
    (1000000 .. 9999999).to_a
  end

  x.report('Array(..)') do
    Array(1000000 .. 9999999)
  end

  x.report('Array.new(n, &:next)') do
    Array.new(8999999, &:next)
  end

}

Soyez prudent, cette méthode astucieuse Array.new(n, &:next) est plus lente alors que trois autres méthodes basiques sont identiques.

                           utilisateur     système      total        réel
[*..]                  0.734000   0.110000   0.844000 (  0.843753)
(..).to_a              0.703000   0.062000   0.765000 (  0.843752)
Array(..)              0.750000   0.016000   0.766000 (  0.859374)
Array.new(n, &:next)   1.250000   0.000000   1.250000 (  1.250002)

9voto

def tableau_jusqu_a(i)
    (1..i).to_a
end

Cela vous permet de:

 > tableau_jusqu_a(10)
 => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

3voto

Sin Nguyen Points 29

Vous pouvez le faire:

array= Array(0..10)

Si vous voulez entrer des données, vous pouvez utiliser ceci:

puts "Entrée:"
n=gets.to_i
array= Array(0..n)
puts array.inspect

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X