boring, get cheat online
This commit is contained in:
parent
df55eec6d8
commit
067decada0
|
@ -0,0 +1,40 @@
|
||||||
|
import sys
|
||||||
|
|
||||||
|
letters = 'abcdefghijklmnopqrstuvwxyz'
|
||||||
|
doubles = [c+c for c in letters]
|
||||||
|
straights = [a+b+c for a,b,c in zip(letters, letters[1:], letters[2:])]
|
||||||
|
next_letter = {c1: c2 for c1, c2 in zip(letters, letters[1:]+'a')}
|
||||||
|
|
||||||
|
|
||||||
|
def is_valid(s):
|
||||||
|
# cannot contain i, o, or l
|
||||||
|
if 'i' in s or 'o' in s or 'l' in s:
|
||||||
|
return False
|
||||||
|
# must include two different pairs of letters
|
||||||
|
if sum([d in s for d in doubles]) < 2:
|
||||||
|
return False
|
||||||
|
# must include a straight of length 3 or greater
|
||||||
|
if not any([d in s for d in straights]):
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
def next_password(s):
|
||||||
|
s = s[:-1] + next_letter[s[-1]] # increment the last letter
|
||||||
|
for i in range(-1, -8, -1):
|
||||||
|
if s[i] == 'a': # increment n-1 letter is n letter changed to 'a'
|
||||||
|
s = s[:i-1] + next_letter[s[i-1]] + s[i:]
|
||||||
|
else:
|
||||||
|
break
|
||||||
|
return s
|
||||||
|
|
||||||
|
|
||||||
|
password = sys.argv[1]
|
||||||
|
while not is_valid(password):
|
||||||
|
password = next_password(password)
|
||||||
|
print(password)
|
||||||
|
|
||||||
|
password = next_password(password)
|
||||||
|
while not is_valid(password):
|
||||||
|
password = next_password(password)
|
||||||
|
print(password)
|
Loading…
Reference in New Issue