LINUX.ORG.RU

Згенерировать все переборы из набора символов


1

1

Есть произвольный набор символов {'a','b','c','d'}
нужно cгенерировать все возможные комбинации некоторой длинны N. (символы могут повторятся)
К примеру если N=2 то

aa
ab
bb
....


Желательно на python или bash.
Возможно у кого-то есть готовая программа, лень самому писать.

★★★★

Последнее исправление: ymuv (всего исправлений: 1)

In [1]: import itertools


In [2]: itertools.combinations?
Type:       type
String Form:<type 'itertools.combinations'>
File:       /usr/lib/python2.7/lib-dynload/itertools.so
Docstring:
combinations(iterable, r) --> combinations object

Return successive r-length combinations of elements in the iterable.

combinations(range(4), 3) --> (0,1,2), (0,1,3), (0,2,3), (1,2,3)


In [3]: itertools.combinations_with_replacement?
Type:       type
String Form:<type 'itertools.combinations_with_replacement'>
File:       /usr/lib/python2.7/lib-dynload/itertools.so
Docstring:
combinations_with_replacement(iterable, r) --> combinations_with_replacement object

Return successive r-length combinations of elements in the iterable
allowing individual elements to have successive repeats.
combinations_with_replacement('ABC', 2) --> AA AB AC BB BC CC
kernelpanic ★★★★★
()
Последнее исправление: kernelpanic (всего исправлений: 1)
python -c "from itertools import product as p ; print('\n'.join([''.join(item) for item in p('ab',repeat=2)]))"

aa
ab
ba
bb
anonymous
()

Згенерировать

Учи уроки, школота!

anonymous
()
eval "echo `printf '{a,b,c,d}%.0s' {1..2}`"
anonymous
()
Ответ на: комментарий от kernelpanic

itertools.combinations_with_replacement?
?

Офигеть, а я всю жизнь мучался набирать help().

anonymous
()
Ответ на: комментарий от Miguel

Так и знал, что хаскелисты опять всех нае..ут. Но решение, конечно, годное.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.