123456789101112131415161718192021222324252627282930313233 |
- # Python 3.7
-
- def main():
- rangeStart = 109165
- rangeEnd = 576723
- count = 0
- for pw in range(rangeStart, rangeEnd):
- count += validatePassword(pw)
- print(count)
-
- def validatePassword(pw):
- pwStr = str(pw)
- # does it have a doubled digit
- # but not a tripled etc. digit!
- # does it have a descending digit
- c, d, m = 0, 0, ""
- for i in range(1, len(pwStr)):
- if pwStr[i-1] == pwStr[i]:
- if c == 0 and m == "": # it has a doubled digit we haven't seen before
- c = 1
- m = pwStr[i]
- elif c == 1 and m == pwStr[i]: # it has a doubled digit we HAVE seen before
- c = 0 # so it doesn't count :(
- else: # this digit isn't the same as the previous, so reset the memo
- m = ""
- if int(pwStr[i]) < int(pwStr[i-1]):
- d = 1
- if c == 0 or d == 1:
- return 0
- return 1
-
- if __name__ == "__main__":
- main()
|