summaryrefslogtreecommitdiff
path: root/2018/aoc2018-d23-p1.py
blob: a387337ad45a5f2fe0e1444ebb75ce745fff283c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#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);