blob: dc40da60b97470dac41b7cc3fc8e65aad33b957a (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
import math
class Chem(object):
def __init__(self, name, created):
self.name = name
self.created = created
self.amount = 0
self.wants = 0
self.left_over = 0
self.producers = {}
def add_producer(self, producer, amount):
self.producers[producer] = amount
def queue(self, amount):
self.wants = amount
for producer, amount in self.producers.items():
#TODO
pass
def produce(self, amount):
if self.name == "ORE":
self.amount += amount
return
productions = math.ceil(amount / self.created)
self.amount += productions * self.created
for producer, amount in self.producers.items():
producer.produce(productions * amount)
def __repr__(self):
return str((self.name, self.amount))
def pt1(input):
chems = {"ORE": Chem("ORE", 1)}
for line in input:
output = line.strip().split(" => ")[1]
chems[output.split(" ")[1]] = Chem(output.split(" ")[1], int(output.split(" ")[0]))
for line in input:
inputs = line.strip().split(" => ")[0]
output = line.strip().split(" => ")[1]
for i in inputs.split(", "):
chems[output.split(" ")[1]] \
.add_producer(chems[i.split(" ")[1]], int(i.split(" ")[0]))
chems["FUEL"].produce(1)
return chems["ORE"]
def pt2(input):
return
|