Самый эффективный способ создания возможных настроек плагин для загадки с Python - PullRequest
0 голосов
/ 21 октября 2019

Я пытаюсь разбить загадочный шифр на python, и мне нужно сгенерировать комбинации плагинов - мне нужна функция, которая принимает параметр length и возвращает объект-генератор всех возможных комбинаций в виде списка.

Пример кода:

for comb in func(2):
   print(comb)
# Example output
['AB', 'CD']
['CD', 'EF']
...

Кто-нибудь знает библиотеку, которая предоставляет такой генератор, или как его создать?

РЕДАКТИРОВАТЬ: подробнее оenigma

См. здесь для получения подробной информации о дизайне панели управления

Кроме того, выходной формат генератора должен соответствовать этому формату без запуск всего генератора:

'AB FO ZP GI HY KS JW MQ XE ...' количество пар будет параметром length в функции.

Ответы [ 2 ]

1 голос
/ 21 октября 2019

Я думаю, что вы ищете itertools.combinsk

>>> from itertools import combinations
>>> list(combinations('abcd', 2))
[('a', 'b'), ('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd'), ('c', 'd')]
>>> [''.join(comb) for comb in combinations('abcd', 2)]
['ab', 'ac', 'ad', 'bc', 'bd', 'cd']
0 голосов
/ 23 октября 2019

Это что-то близкое к тому, что вы ищете? Дайте мне знать, и я могу пересмотреть.

Функция plugboard() возвращает (yield) объект generator, к которому можно получить доступ либо с помощью итеративного цикла, либо путем вызова функции next().

from itertools import product

def plugboard(chars, length):
    for comb in product(chars, repeat=length):
        yield ''.join(comb)

Такой вызов создаст combs как generator объект:

combs = plugboard('abcde', 2)
type(combs)

>>> generator

Для доступа к значениям вы можете использовать:

next(combs)
>>> 'aa'

Или:

for i in combs: print(i)

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