Solve 2019 day 14 and 15

This commit is contained in:
2024-08-16 19:45:10 -04:00
parent 6efa70ea51
commit f88eb14d24
6 changed files with 258 additions and 2 deletions

53
2019/d12.py Normal file
View 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()