Pythonで混乱を生成するアルゴリズムをオンラインで見つけましたが、それらはすべて指数関数的に複雑であり、その結果、26個の要素(アルファベット)のセットに収束させることができません!
だから私は次のコードを改善する方法を見つけようとしています(ソースはこちら):
def derangement(vs):
l = [None for x in vs]
sol = set()
sol.add(tuple(l))
for v in vs:
sol1 = set()
for s in sol:
for (i, v1) in enumerate(s):
if not v1 and v != vs[i]:
s1 = list(s)
s1[i] = v
sol1.add(tuple(s1))
sol = sol1
return list(sol)
誰かが興味を持っているなら、これはブルートフォース換字式暗号ソルバーのためのものです。暗号をブルートフォースするのにどれくらいの時間がかかるかを確認しようとしています。