私は長さrのVigenere暗号鍵のlazily iterableコレクションを生成しようとしています。私はitertools
とpermutations()
メソッドを知っています。しかし、これはABCD
、ABCE
、ABCF
などのキーを生成しますが、AABC
のようなことはありません。Python 3:すべての順列を生成するのではなく、長さrのすべての非反復組み合わせを生成しますか?
基本的には、反復しないタプルや文字列が必要です(つまり、反復キーを半分にして2つの同じ半分にすることができます)が、重複する文字を含むことがあります。良い例:AABABA
、AABAAB
ではありません。
このようなキーを生成しないようなコレクションを作成するにはどうしたらいいですか?3文字以上のキーを探索するときにRAMを爆破することはありません。
に感謝を固定? – Edwin
多分曖昧に聞こえるかもしれませんが、私は "反復的"とはあなたがそのようなことをすることができるということを意味します。 – 2rs2ts
あいまいではない、矛盾している。最初は反復的ではないと言うので(AABAABは動作しません)、キーを半分にカットして2つの半分にすることができます(AABAABは*働くでしょう)。あなたの例は前者をサポートしています。ちょうど明確化を求める。 – Edwin