Solution to problem 2 in Python

This commit is contained in:
David Doblas Jiménez 2021-11-15 21:14:08 +01:00
parent d16ec7b8ef
commit 5866f7aed3

55
src/P2.py Normal file
View File

@ -0,0 +1,55 @@
# --- Day 2: Password Philosophy ---
# Your flight departs in a few days from the coastal airport; the easiest way
# down to the coast from here is via toboggan.
# The shopkeeper at the North Pole Toboggan Rental Shop is having a bad day.
# "Something's wrong with our computers; we can't log in!" You ask if you can
# take a look.
# Their password database seems to be a little corrupted: some of the passwords
# wouldn't have been allowed by the Official Toboggan Corporate Policy that was
# in effect when they were chosen.
# To try to debug the problem, they have created a list (your puzzle input) of
# passwords (according to the corrupted database) and the corporate policy when
# that password was set.
# For example, suppose you have the following list:
# 1-3 a: abcde
# 1-3 b: cdefg
# 2-9 c: ccccccccc
# Each line gives the password policy and then the password. The password
# policy indicates the lowest and highest number of times a given letter must
# appear for the password to be valid. For example, 1-3 a means that the
# password must contain a at least 1 time and at most 3 times.
# In the above example, 2 passwords are valid. The middle password, cdefg, is
# not; it contains no instances of b, but needs at least 1. The first and third
# passwords are valid: they contain one a or nine c, both within the limits of
# their respective policies.
# How many passwords are valid according to their policies?
with open("files/P2.txt", "r") as f:
passwds = [line.split() for line in f.read().strip().split("\n")]
def part_1() -> None:
correct_passwds = 0
for passwd in passwds:
min_, max_ = passwd[0].split("-")
if passwd[2].count(passwd[1][:-1]) >= int(min_) and passwd[2].count(
passwd[1][:-1]
) <= int(max_):
correct_passwds += 1
print(f"There are {correct_passwds} valid passwords in the database")
if __name__ == "__main__":
part_1()