diff options
Diffstat (limited to 'day11.py')
-rw-r--r-- | day11.py | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/day11.py b/day11.py new file mode 100644 index 0000000..534b6c4 --- /dev/null +++ b/day11.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python + +from itertools import combinations + +def valid(password): + def windows(): + alphabet = 'abcdefghijklmnopqrstuvwxyz' + for i in range(24): + yield alphabet[i:i+3] + + def pairs(): + alphabet = 'abcdefghijklmnopqrstuvwxyz' + for combo in combinations(alphabet, 2): + yield combo + + if not any(seq in password for seq in windows()): + return False + if any(char in password for char in 'iol'): + return False + if not any(char1*2 in password and char2*2 in password for char1, char2 in pairs()): + return False + return True + + + +def passwords(): + password = list(map(lambda x: ord(x)-96, 'cqjxjnds')) + while not password[0] == 27: + yield ''.join(char for char in map(lambda x: chr(x+96), password)) + password[-1] += 1 + for i in range(7, 0, -1): + if password[i] == 27: + password[i] = 1 + password[i-1] += 1 + +count = 0 +for password in passwords(): + if valid(password): + print(password) + count += 1 + if count == 2: + break |