2011-03-06 3 views

Répondre

20

Comme steenslag rappelle, la façon la plus rapide est

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

Si votre alphabet n'est pas 'a' à 'z', cependant, vous pouvez utiliser Array#repeated_combination:

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

Ou, comme Mladen souligne:

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

Note: repeated_combination est disponible en Ruby 1.9.2 ou en require 'backports/1.9.2/array/repeated_combination' depuis ma gemme backports.

+3

Ou, simplement, 'Array # product' sur lui-même. :) –

+0

@Mladen: En effet, et cela pourrait être utile pour mélanger différents ensembles de lettres. Réponse mise à jour, merci. –

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

Convertit une plage en un tableau.

+0

** Ceci est la raison pour laquelle j'aime Ruby! J'avais '(('a' .. 'z'). To_a.permutation (2) .map (&: joindre) + ('a' .. 'z'). To_a.map {| a | a * 2 }) ', mais ensuite je pensais, *" C'est un désordre Je me demande si '('aa' .. 'zz')' fonctionnerait? "* Puis, j'ai été étonné. –

+0

@Ashley: votre approche est bien générique, et l'utilisation de 'repeat_combination' la rend plus propre (voir ma réponse). –

Questions connexes