main About me Back to Posts Personal Projects Links Privacy Contact
Today is day two of the Advent of Code. See yesterday’s post for an explanation.
Today’s challenge was, as expected, a little harder than yesterday’s, but not much really. I have 4 stars now!
Here is the code I wrote for puzzle 1 today:
# Advent of Code day 2 part 1 - How many passwords are valid according to their policies?
with open("c:\\git\\advent-2020\\2.txt", "r") as f:
passwords = f.read().splitlines()
count = 0
for line in passwords:
# example line: 8-9 x: xxxxxxxrk
posNum = line.find(" ")
dashPos = line.find("-")
numValid = line[0:posNum]
firstValid = numValid[0:dashPos]
lastValid = numValid[dashPos+1:posNum]
charValid = line[posNum+1:posNum+2]
passwd = line[posNum+4:]
validCharCount = 0
for ch in passwd:
if ch == charValid:
validCharCount += 1
print (firstValid + "-"+ lastValid + "-" + charValid + "-" + passwd + "-" + str(validCharCount))
if validCharCount >= int(firstValid) and validCharCount <= int(lastValid):
count += 1
# print (line)
print("count = " + str(count))
print("There are " + str(len(passwords)) + " passwords in the file, of which, " + str(count) + " are valid passwords.")
And here is the code for puzzle 2:
# Advent of Code day 2 part 2
with open("c:\\git\\advent-2020\\2.txt", "r") as f:
passwords = f.read().splitlines()
count = 0
ctr = 20
for line in passwords:
# example line: 8-9 x: xxxxxxxrk
spacePos = line.find(" ")
dashPos = line.find("-")
numValid = line[0:spacePos]
firstValid = numValid[0:dashPos]
lastValid = numValid[dashPos+1:spacePos]
charValid = line[spacePos+1:spacePos+2]
passwd = line[spacePos+4:]
validCharCount = 0
chCnt = 1
for ch in passwd:
if chCnt == int(firstValid) or chCnt == int(lastValid):
if ch == charValid:
validCharCount += 1
chCnt += 1
print (firstValid + "-"+ lastValid + "-" + charValid + "-" + passwd + "-" + str(validCharCount))
if validCharCount == 1:
count += 1
# print (line)
print("count = " + str(count))
print("There are " + str(len(passwords)) + " passwords in the file, of which, " + str(count) + " are valid passwords.")
If anyone reads this and has ideas on how I could write more efficient or “pythonic” code, please let me know!
Cheers!