2018 Day 15
This commit is contained in:
parent
ab23da9b56
commit
539965e4a7
|
@ -0,0 +1,28 @@
|
|||
with open('day15-input', 'r') as file:
|
||||
data = [l.strip('\n') for l in file]
|
||||
import numpy as np
|
||||
from itertools import combinations_with_replacement as combi
|
||||
|
||||
ingredients = {}
|
||||
for line in data:
|
||||
tokens = line.split()
|
||||
name = tokens[0].rstrip(':')
|
||||
values = [int(i.rstrip(',')) for i in tokens[2::2]]
|
||||
ingredients[name] = values
|
||||
|
||||
ingredients_matrix = np.asmatrix(np.vstack(ingredients.values()))
|
||||
|
||||
max_value = 0
|
||||
max_value_500 = 0
|
||||
for teaspoons in combi(range(len(ingredients)), 100):
|
||||
ingredient_amounts = [teaspoons.count(i) for i in range(len(ingredients))]
|
||||
property_amounts = (ingredients_matrix.T * np.mat(ingredient_amounts).T)
|
||||
if (property_amounts[:-1] < 1).sum(): # non-positive values for anything other than calories detected, abort
|
||||
continue
|
||||
value = np.prod(property_amounts[:-1])
|
||||
max_value = max(value, max_value)
|
||||
if property_amounts[-1] == 500:
|
||||
max_value_500 = max(value, max_value_500)
|
||||
|
||||
print(max_value) # Part 1
|
||||
print(max_value_500) # Part 2
|
Loading…
Reference in New Issue