Dado que tengo un valor entero de, por ejemplo, 10
.Crear una matriz de n elementos basados en el valor entero
¿Cómo puedo crear una matriz de 10 elementos como [1,2,3,4,5,6,7,8,9,10]
?
Dado que tengo un valor entero de, por ejemplo, 10
.Crear una matriz de n elementos basados en el valor entero
¿Cómo puedo crear una matriz de 10 elementos como [1,2,3,4,5,6,7,8,9,10]
?
Puede simplemente splat una gama:
[*1..10]
#=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Ruby 1.9 permite a varios símbolos de la, que es bastante útil:
[*1..3, *?a..?c]
#=> [1, 2, 3, "a", "b", "c"]
+1 para varios símbolos – megas
Esto es genial, porque no me di cuenta antes de eso: [* 0..0] # => [0] Pero, [* 1..0] # => [] – hcarreras
@MichaelKohl - gracias - ¿qué significa el signo de interrogación? antes de las letras de arriba significa? – BKSpurgeon
def array_up_to(i)
(1..i).to_a
end
¿Qué le permite:
> array_up_to(10)
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
otra manera complicada:
> Array.new(10) {|i| i+1 }
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Aún más complicado si lo escribes como 'Array.new (10, y: siguiente) '. –
Incluso más complicado: 'Array.new (10, & 1.method (: +))' –
Usted puede hacer esto:
array= Array(0..10)
Si desea introducir, puede utilizar esto:
puts "Input:"
n=gets.to_i
array= Array(0..n)
puts array.inspect
Acerca de los comentarios con métodos complicados:
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
}
Tenga cuidado, este complicado método Array.new(n, &:next)
es más lento mientras que tres otros métodos básicos son lo mismo.
user system total real
[*..] 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)
duplicado posible de [Forma correcta de rellenar una matriz con un rango en Ruby] (http://stackoverflow.com/questions/191329/correct-way-to-populate-an-array-with-a -range-in-ruby) –