2011-03-06 13 views

Respuesta

20

Como steenslag puntos cabo, la forma más rápida es

('aa'..'zz').to_a 

Si su alfabeto no es 'a' a la 'z', sin embargo, puede utilizar Array#repeated_combination:

alphabet = %w[А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я] 
alphabet.repeated_combination(2).map(&:join) # => ["AA", "AБ", ...] 

O, como Mladen señala:

alphabet.product(alphabet).map(&:join) 

Nota: repeated_combination está disponible en Ruby 1.9.2 o con require 'backports/1.9.2/array/repeated_combination' de mi backports gema.

+3

O, simplemente, 'Matriz # producto' en sí misma. :) –

+0

@Mladen: De hecho, y eso podría ser útil para mezclar diferentes conjuntos de letras. Respuesta actualizada, gracias. –

8
('aa'..'zz').to_a 

Convierte un rango en una matriz.

+0

** ¡Este ** es el motivo por el que amo a Ruby! Tuve '(('a' .. 'z'). To_a.permutation (2) .map (&: join) + ('a' .. 'z'). To_a.map {| a | a * 2 }) ', pero luego pensé, *" Esto es un desastre. Me pregunto si '('aa' .. 'zz')' funcionaría? "* Entonces, me sorprendió. –

+0

@ Ashley: su enfoque es muy genérico, sin embargo, y el uso de 'repeated_combination' lo hace más limpio (ver mi respuesta). –

Cuestiones relacionadas