2012-06-29 8 views
6

Me preguntaba cómo puedo generar la siguiente matriz utilizando rangos de rubíRubí crear una matriz específica de la gama

["00","00","01","01","02", "02", ...... "10", "10"] 

quiero repetir cada elemento dos veces esa es la parte que estoy buscando una respuesta para. Puedo generar los elementos individuales de la siguiente manera

("00".."10").to_a 

Sé que puedo hacer esto utilizando bucles etc pero estoy en busca de un código de una línea simple

Gracias

Respuesta

6
("00".."10").flat_map { |x| [x, x] } 
#=> ["00", "00", "01", "01", ..., "10", "10"] 
8

Uso Array#zip y Array#flatten:

a = ("00".."10").to_a 
a.zip(a).flatten 
# ["00", "00", "01", "01", "02", "02", "03", "03", "04", "04", "05", "05", "06", "06", "07", "07", "08", "08", "09", "09", "10", "10"] 
+0

'to_a' es innecesario – tokland

Cuestiones relacionadas