2014-10-16 2 views
-2

먼저 나는 독일인이라고 말해야합니다. 실수에 대해 너무나 미안합니다.문자 계산 알고리즘

난이 알고리즘을 복사 한 :이에 대한 응답에서

letters = list("123456") 
for current in xrange(10): 
    a = [i for i in letters] 
    for y in xrange(current): 
    a = [x+i for i in letters for x in a] 
    a = a[startpoint:] 
    for password in a: 
     print password 

: 여기 내 문제가 Python Brute Force algorithm 와 나는 아마추어 무차별에 대해 비밀번호를 사용해이 알고리즘을 사용하고 싶습니다. 인터넷에 테스트가 있지만 내 테스트를 만들고 싶습니다.

나는이 brute-force-programm를 이미 끝 냈지만,이 알고리즘은 3 글자 만 생성한다는 것을 알았습니다. 3 글자로이 같은 일 : 2 편지와 함께 모든 possibilitys 후

aa, ba, ca, da, ea, fa, usw. 

가이 할려고 :

aaa, baa, caa, daa, eaa, faa, usw. 

을하지만 3 글자로 완성 된 경우, 다시 2 글자로 시작! 왜?

나는이 알고리즘이 무엇을하는지 이해하지 못한다. 나는 그 무한 수식만을 알고 있으며, 재귀 수식이라고 불린다.

letters = list("123456") 
a = [x+i for i in letters for y+x in letters for y in letters] 

하지만 내가 응답을 얻을 다른 포럼에서 "운영자에게 할당 할 수 없습니다"오류 을 생산 : 이해 완전히 내가 이것을 tryed. 이것을 바탕으로 나는 이것을 시도했다 :

letters = list("123456") 
a = [x+i for i in letters y+x for x in letters for y in letters] 

그러나 구문 오류. 이 코드에 무슨 문제가 있습니까? 정확히 "opperator에 할당 할 수 없습니다"라는 오류를 말합니다. 여기서 opperator에 값을 할당합니까?

답변

-1

한 세트 사용의 모든 제품을 원하는 경우 구문 오류에 대한 실제 질문에 같은 제품

import itertools 
min_pw_len,max_pw_len = 4,5 
letters = list("123456") 
my_password = "1122" 

for my_len in range(min_pw_len,max_pw_len): 
    for guess in itertools.product(letters,repeat=my_len): 
     if "".join(guess) == my_password: 
      print "Found:",guess 

에게 itertools

a = [x+i for i in letters y+x for x in letters for y in letters] 
          ^this is the problem ... you cannot do that (Im not entirely sure what you are trying to do) 

임 당신이 원하는 guessign 뭔가

a2 = (x+y for x in letters for y in letters) #note that this is a generator not a list 
a3 = (x+y for x in a2 for y in letters) 
a4 = (x+y for x in a3 for y in letters) 
... 
+0

같은 감사! 나는 너무 어리 석다. 나는이 itertools 방법이 50 라인 이상을 필요로하는 솔루 션을 발견했다. 그래서 나는 그것을 보지 않는다. 및 예. 할일 : D 감사합니다. –