We made it to Day 2 of Advent of Code
I have kept my promise for 2 days in a row.
As weird as it seems for this day and age, I have kept my promise and today is the day 2 of the Advent of Code, this time with elves involved. There you go, the statement of today's first problem down below:
And usual, my solution:
import pandas as pd
import re
import numpy as np
filepath = "/content/input 1.txt"
with open(filepath, 'r') as file:
lines = [line.strip() for line in file.readlines()]
lines_split = []
for line in lines:
token = re.findall(r'\w+|[^\s\w]', line)
lines_split.append(token)
blue_list = []
green_list = []
red_list = []
for line in lines_split:
blue,green,red = 0,0,0
for ix, word in enumerate(line):
if word == "blue":
if blue < int(line[ix-1]):
blue = int(line[ix-1])
if word == "green":
if green < int(line[ix-1]):
green = int(line[ix-1])
if word == "red":
if red < int(line[ix-1]):
red = int(line[ix-1])
blue_list.append(blue)
green_list.append(green)
red_list.append(red)
red_max = 12
green_max = 13
blue_max = 14
index_blue = []
index_green = []
index_red = []
for ix,i in enumerate(blue_list):
if i <= blue_max:
index_blue.append(ix+1)
for ix,i in enumerate(green_list):
if i <= green_max:
index_green.append(ix+1)
for ix,i in enumerate(red_list):
if i <= red_max:
index_red.append(ix+1)
def intersection(lst1, lst2):
lst3 = [value for value in lst1 if value in lst2]
return lst3
def intersection(lst1, lst2):
lst3 = [value for value in lst1 if value in lst2]
return lst3
inter_1 = intersection(index_blue, index_green)
inter_2 = intersection(index_red, inter_1)
sum(inter_2)
And yes, oddly enough is the right answer:
Let's go for the second day:
Luckily enough I had already stored in three lists the minimum amount needed for each game so it's quite easy, just multiply those 3 vectors and get the results:
multiplication = []
for ix,i in enumerate(blue_list):
res = i * green_list[ix] * red_list[ix]
multiplication.append(res)
sum(multiplication)
And there you go, this is the result:
Comments
Post a Comment