Solve 2019 day 14 and 15
This commit is contained in:
53
2019/d12.py
Normal file
53
2019/d12.py
Normal file
@@ -0,0 +1,53 @@
|
||||
from lib import get_data, str_to_ints
|
||||
|
||||
|
||||
def freeze(coords, velos):
|
||||
coords = tuple(map(tuple, coords))
|
||||
velos = tuple(map(tuple, velos))
|
||||
return coords + velos
|
||||
|
||||
|
||||
def part_1(data):
|
||||
coords = []
|
||||
velos = []
|
||||
for line in data.splitlines():
|
||||
coords.append(str_to_ints(line))
|
||||
velos.append([0, 0, 0])
|
||||
|
||||
for _ in range(1_000):
|
||||
# apply gravity
|
||||
for i in range(len(coords)):
|
||||
for j in range(i + 1, len(coords)):
|
||||
for d in range(3):
|
||||
if coords[i][d] > coords[j][d]:
|
||||
velos[i][d] -= 1
|
||||
velos[j][d] += 1
|
||||
elif coords[i][d] < coords[j][d]:
|
||||
velos[i][d] += 1
|
||||
velos[j][d] -= 1
|
||||
|
||||
# update coords
|
||||
for i in range(len(coords)):
|
||||
for d in range(3):
|
||||
coords[i][d] += velos[i][d]
|
||||
|
||||
r = 0
|
||||
for i in range(len(coords)):
|
||||
p = sum(map(abs, coords[i]))
|
||||
k = sum(map(abs, velos[i]))
|
||||
r += p * k
|
||||
print(r)
|
||||
|
||||
|
||||
def part_2(data):
|
||||
raise Exception("TBD")
|
||||
|
||||
|
||||
def main():
|
||||
data = get_data(__file__)
|
||||
part_1(data)
|
||||
part_2(data)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user