LINUX.ORG.RU

Скрипт генерации


0

1

Уважаемые, не подскажите в каком направлении копать?: Нужен скрипт генерации определенной последовательности определенных символов. как пример: нужны все комбинации длиной 5 символов из символов abcdeABCDE,причем в определенном порядке (abcde,AbcDE,aBCDe и т.д)

заменить заглавную букву в соответствующей позиции на 1, строчную на 0, сгенерировать массив двоичных чисел от 00000 до 11111, потом заменить цифры на буквы?

zolden ★★★★★
()

python

>>> [ a+b+c+d+e for a in 'aA' for b in 'bB' for c in 'cC' for d in 'dD' for e in 'eE' ]
['abcde', 'abcdE', 'abcDe', 'abcDE', 'abCde', 'abCdE', 'abCDe', 'abCDE', 'aBcde', 'aBcdE', 'aBcDe', 'aBcDE', 'aBCde', 'aBCdE', 'aBCDe', 'aBCDE', 'Abcde', 'AbcdE', 'AbcDe', 'AbcDE', 'AbCde', 'AbCdE', 'AbCDe', 'AbCDE', 'ABcde', 'ABcdE', 'ABcDe', 'ABcDE', 'ABCde', 'ABCdE', 'ABCDe', 'ABCDE']

Называется декартово произведение. Можно наверное свернуть через reduce что б было покороче, но лень;-)

AIv ★★★★★
()

> нужны все комбинации длиной 5 символов из символов abcdeABCDE

perl -E 'say for map{sprintf(«%05d»,$_)=~tr/0-9/a-eA-E/r}0..99999'

> причем в определенном порядке (abcde,AbcDE,aBCDe и т.д)

КАК ты получил такую последовательность? о_О

arsi ★★★★★
()
Ответ на: комментарий от AIv

про декартово произведение не слышал, но реализация красивая

zsh:

for n1 in {a,A};for n2 in {b,B};for n3 in {c,C};for n4 in {d,D};for n5 in {e,E};echo $n1$n2$n3$n4$n5

zolden ★★★★★
()
Ответ на: комментарий от arsi

> КАК ты получил такую последовательность? о_О

Это как пример,что буквы идут по порядку -abcde, а регистр может быть любой.

Pochatog
() автор топика
Ответ на: комментарий от Pochatog

> Это как пример,что буквы идут по порядку -abcde, а регистр может быть любой.

ну так и говори, что последовательности идут рандомно, но с некоторыми ограничениями, а не «в определенном порядке».

perl -E 'say for map{sprintf(«%05d»,$_)=~tr/0-9/aAbBcCdDeE/r}0..99999'

arsi ★★★★★
()
Ответ на: комментарий от arsi

или даже perl -E 'say for sort{lc$a cmp lc$b}map{sprintf(«%05d»,$_)=~tr/0-9/a-eA-E/r}0..99999'

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

зачОт! Да, баш бывает исключительно лаконичен;-)

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