89 lines
2.9 KiB
Python
89 lines
2.9 KiB
Python
# --- Day 1: Report Repair ---
|
|
|
|
# After saving Christmas five years in a row, you've decided to take a vacation
|
|
# at a nice resort on a tropical island. Surely, Christmas will go on without you.
|
|
|
|
# The tropical island has its own currency and is entirely cash-only. The gold
|
|
# coins used there have a little picture of a starfish; the locals just call
|
|
# them stars. None of the currency exchanges seem to have heard of them, but
|
|
# somehow, you'll need to find fifty of these coins by the time you arrive so
|
|
# you can pay the deposit on your room.
|
|
|
|
# To save your vacation, you need to get all fifty stars by December 25th.
|
|
|
|
# Collect stars by solving puzzles. Two puzzles will be made available on each
|
|
# day in the Advent calendar; the second puzzle is unlocked when you complete
|
|
# the first. Each puzzle grants one star. Good luck!
|
|
|
|
# Before you leave, the Elves in accounting just need you to fix your expense
|
|
# report (your puzzle input); apparently, something isn't quite adding up.
|
|
|
|
# Specifically, they need you to find the two entries that sum to 2020 and then
|
|
# multiply those two numbers together.
|
|
|
|
# For example, suppose your expense report contained the following:
|
|
|
|
# 1721
|
|
# 979
|
|
# 366
|
|
# 299
|
|
# 675
|
|
# 1456
|
|
|
|
# In this list, the two entries that sum to 2020 are 1721 and 299. Multiplying
|
|
# them together produces 1721 * 299 = 514579, so the correct answer is 514579.
|
|
|
|
# Of course, your expense report is much larger. Find the two entries that sum
|
|
# to 2020; what do you get if you multiply them together?
|
|
|
|
with open("files/P1.txt", "r") as f:
|
|
numbers = [int(number) for number in f.read().strip().split("\n")]
|
|
|
|
|
|
def part_1() -> None:
|
|
for n in numbers:
|
|
for i in range(len(numbers)):
|
|
if n + numbers[i] == 2020:
|
|
print(f"{n} times {numbers[i]} is {n*numbers[i]}")
|
|
break
|
|
else:
|
|
continue
|
|
break
|
|
|
|
|
|
# --- Part Two ---
|
|
|
|
# The Elves in accounting are thankful for your help; one of them even offers
|
|
# you a starfish coin they had left over from a past vacation. They offer you
|
|
# a second one if you can find three numbers in your expense report that meet
|
|
# the same criteria.
|
|
|
|
# Using the above example again, the three entries that sum to 2020 are 979,
|
|
# 366, and 675. Multiplying them together produces the answer, 241861950.
|
|
|
|
# In your expense report, what is the product of the three entries that sum to
|
|
# 2020?
|
|
|
|
|
|
def part_2() -> None:
|
|
for n in numbers:
|
|
for i in range(len(numbers)):
|
|
for j in range(len(numbers)):
|
|
if n + numbers[i] + numbers[j] == 2020:
|
|
print(
|
|
f"{n} times {numbers[i]} times {numbers[j]} is "
|
|
f"{n*numbers[i]*numbers[j]}"
|
|
)
|
|
break
|
|
else:
|
|
continue
|
|
break
|
|
else:
|
|
continue
|
|
break
|
|
|
|
|
|
if __name__ == "__main__":
|
|
part_1()
|
|
part_2()
|