Ruby - генерирует все двухбуквенные слова - PullRequest
5 голосов
/ 06 марта 2011

Я пытаюсь сгенерировать массив, содержащий все двухбуквенные словосочетания.

Как лучше всего сгенерировать его.

Может ли кто-нибудь мне помочь?

Ответы [ 2 ]

20 голосов
/ 06 марта 2011

Как указывает 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)

Примечание : repeated_combination доступен в Ruby 1.9.2 или с require 'backports/1.9.2/array/repeated_combination' из моего backports драгоценного камня.

8 голосов
/ 06 марта 2011
('aa'..'zz').to_a

Преобразует диапазон в массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...