#advent of code 2018 #day 23 #part 1 and part 2 f = open("input.txt",'r'); Testing = False; #Testing = True; if Testing: f.close(); f = open("testinput.txt",'r'); def manhattan(pos1, pos2): mx = abs(pos1[0] - pos2[0]); my = abs(pos1[1] - pos2[1]); mz = abs(pos1[2] - pos2[2]); return mx + my + mz; class nanobot: def __init__(self, pos, r): self.pos = pos; self.radius = r; def __str__(self): return f'pos={self.pos}, r={self.radius}'; bots = []; for l in f: l = l.replace("<","("); l = l.replace(">",")"); l = l.replace("r=",""); l = l.replace("pos=",""); p, r = eval(l); bots.append(nanobot(p,r)); f.close(); strongest_radius = 0; strongest_pos = None; for bot in bots: if bot.radius > strongest_radius: strongest_radius = bot.radius; strongest_pos = bot.pos; part1 = 0; for bot in bots: if (manhattan(strongest_pos, bot.pos) <= strongest_radius): part1 += 1; print("part1 = ", part1);