J'essaie de générer un tableau contenant toutes les combinaisons de mots de deux lettres.Ruby - Générer tous les mots de deux lettres
Quelle serait la meilleure façon de le générer.
Quelqu'un pourrait-il m'aider?
J'essaie de générer un tableau contenant toutes les combinaisons de mots de deux lettres.Ruby - Générer tous les mots de deux lettres
Quelle serait la meilleure façon de le générer.
Quelqu'un pourrait-il m'aider?
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
.
('aa'..'zz').to_a
Convertit une plage en un tableau.
** 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é. –
@Ashley: votre approche est bien générique, et l'utilisation de 'repeat_combination' la rend plus propre (voir ma réponse). –
Ou, simplement, 'Array # product' sur lui-même. :) –
@Mladen: En effet, et cela pourrait être utile pour mélanger différents ensembles de lettres. Réponse mise à jour, merci. –