1
0
Fork 0

Refactor part 1 of 2017-12-20

This commit is contained in:
Lucidiot 2018-10-11 22:35:48 +02:00
parent 894f3a5f4f
commit 9bfa5ac661
No known key found for this signature in database
GPG Key ID: AE3F7205692FA205
1 changed files with 13 additions and 7 deletions

View File

@ -1,20 +1,26 @@
#!/usr/bin/env python3
def man_dist(tup):
return abs(tup[0]) + abs(tup[1]) + abs(tup[2])
return sum(map(abs, tup))
import sys
import re
pattern = re.compile(r"<([0-9-]*),([0-9-]*),([0-9-]*)>")
data = [[(int(c[0]), int(c[1]), int(c[2])) for c in p] for p in [pattern.findall(l.strip()) for l in sys.stdin.readlines()]]
def update_particle(p):
return (
tuple(map(sum, zip(p[0], p[1]))),
tuple(map(sum, zip(p[1], p[2]))),
p[2],
)
while True:
for i in range(len(data)):
data[i][0] = tuple(data[i][0][k] + data[i][1][k] for k in range(len(data[i][0])))
data[i][1] = tuple(data[i][1][k] + data[i][2][k] for k in range(len(data[i][1])))
data = list(map(update_particle, data))
min_dist, min_p = None, None
for i in range(len(data)):
if min_p is None or man_dist(data[i][0]) < min_dist:
min_p, min_dist = i, man_dist(data[i][0])
for i, particle in enumerate(data):
md = man_dist(particle[0])
if min_p is None or md < min_dist:
min_p, min_dist = i, md
print(min_p)