-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path02.py
executable file
·55 lines (38 loc) · 1.44 KB
/
02.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/usr/bin/env python3
# Eingabe lesen
with open("input/02.txt") as infile:
input = infile.read().split("\n")
# Passwort überprüfen
def password_is_valid_old_rules(dataset):
# Regel einlesen
rule, password = dataset.split(": ", 1)
limits, ruleLetter = rule.split(" ", 1)
lowerLimit, upperLimit = [int(num) for num in limits.split("-", 1)]
# Variablen:
# - password: string
# - ruleLetter: string (a-z)
# - lowerLimit, upperLimit: int
# Anzahl Buchstaben zwischen beiden Limits
return lowerLimit <= password.count(ruleLetter) <= upperLimit
# Anzahl korrekter Passwörter nach falschen Regeln
numCorrect = 0
for password in input:
if password_is_valid_old_rules(password):
numCorrect += 1
# 383
print(f"Anzahl korrekter Passwörter nach alten Regeln: {numCorrect}")
# Teil 2: Korrekte "Firmenphilosophie"
# Passwort überprüfen
def password_is_valid_new_rules(dataset):
# Regel einlesen
rule, password = dataset.split(": ", 1)
positions, ruleLetter = rule.split(" ", 1)
firstPos, secondPos = [int(num) for num in positions.split("-", 1)]
return (password[firstPos - 1] == ruleLetter) ^ (password[secondPos - 1] == ruleLetter)
# Anzahl korrekter Passwörter nach neuen Regeln
numCorrect = 0
for password in input:
if password_is_valid_new_rules(password):
numCorrect += 1
# 272
print(f"Anzahl korrekter Passwörter nach neuen Regeln: {numCorrect}")