Refactor part 1 of 2017-12-20
This commit is contained in:
parent
894f3a5f4f
commit
9bfa5ac661
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue