2011-03-06 57 views

回答

20

由於steenslag指出,最快的方法是

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

如果你的字母不是 'a' 到 'Z',不過,你可以使用Array#repeated_combination

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

或者,如Mladen指出:

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

Noterepeated_combination在Ruby 1.9.2中可用,或者在backports寶石中可用require 'backports/1.9.2/array/repeated_combination'

+3

或者,簡單地說,它本身就是'Array#product'。 :) – 2011-03-06 20:43:15

+0

@Mladen:確實,這可能對混合不同的字母集合有用。答覆更新,謝謝。 – 2011-03-06 20:52:01

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

將範圍轉換爲數組。

+0

**這**是我喜歡Ruby的原因!我有'(('a'..'z')to_a.permutation(2).map(&:join)+('a'..'z')。to_a.map {| a | a * 2 })',但後來我想,*「這是一團糟,我想知道'('aa'''zz')'會起作用嗎?」然後,我很驚訝。 – 2011-03-06 19:51:56

+0

@Ashley:雖然你的方法非常通用,並且使用'repeated_combination'使它更加清晰(請參閱我的答案)。 – 2011-03-06 20:28:07