Solved day 12a

master
Arne Wischer 6 years ago
parent eed17195fc
commit 0a2598ffc4
  1. 4
      days/input/day12_input
  2. 34
      days/test_day12.py

@ -0,0 +1,4 @@
<x=14, y=2, z=8>
<x=7, y=4, z=10>
<x=1, y=17, z=16>
<x=-4, y=-1, z=1>

@ -0,0 +1,34 @@
from itertools import permutations
import os
import re
inputfile = os.path.join(os.path.dirname(__file__), "input/day12_input")
def get_moons():
with open(inputfile) as fp:
return [[int(m[1]), int(m[2]), int(m[3])]
for m in
re.finditer(r'x=(-?\d+).*y=(-?\d+).*z=(-?\d+)', fp.read())]
def test_day12a():
moons = [(m, [0, 0, 0]) for m in get_moons()]
e = 0
for _ in range(1000):
for me, other in permutations(moons, 2):
v = me[1]
pa = me[0]
pb = other[0]
v[0] += -1 if pa[0] > pb[0] else 1 if pa[0] < pb[0] else 0
v[1] += -1 if pa[1] > pb[1] else 1 if pa[1] < pb[1] else 0
v[2] += -1 if pa[2] > pb[2] else 1 if pa[2] < pb[2] else 0
for moon in moons:
moon[0][0] += moon[1][0]
moon[0][1] += moon[1][1]
moon[0][2] += moon[1][2]
for p, v in moons:
e += (abs(p[0])+abs(p[1])+abs(p[2]))*(abs(v[0])+abs(v[1])+abs(v[2]))
assert e == 9139
Loading…
Cancel
Save