Add 2022 extras and rm input/samples
This commit is contained in:
parent
7809a82ce7
commit
1d2098a708
30 changed files with 402 additions and 6471 deletions
54
Python/2022/18/main.py
Normal file
54
Python/2022/18/main.py
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
input = open("input", 'r')
|
||||
# input = open("sample", 'r')
|
||||
# input = open("test", 'r')
|
||||
|
||||
pairwise = lambda a,b: (a[0] + b[0], a[1]+b[1], a[2]+b[2])
|
||||
|
||||
data = []
|
||||
data2 = []
|
||||
total = 0
|
||||
|
||||
for line in input:
|
||||
line = line.strip()
|
||||
x,y,z = line.split(",")
|
||||
data.append([(int(x),int(y),int(z)), [False for _ in range(6)]])
|
||||
data2.append((int(x),int(y),int(z)))
|
||||
|
||||
dirs = [(1,0,0),(-1,0,0),(0,1,0),(0,-1,0),(0,0,1),(0,0,-1)]
|
||||
|
||||
for cubedata in data:
|
||||
for i,dr in enumerate(dirs):
|
||||
if cubedata[1][i]:
|
||||
continue
|
||||
side = pairwise(cubedata[0],dr)
|
||||
if side in data2:
|
||||
ind = data2.index(side)
|
||||
cubedata[1][i] = True
|
||||
if i % 2 == 0:
|
||||
data[ind][1][i+1] = True
|
||||
else:
|
||||
data[ind][1][i-1] = True
|
||||
|
||||
for cubedata in data:
|
||||
for covered in cubedata[1]:
|
||||
if not covered:
|
||||
total += 1
|
||||
|
||||
# print(data)
|
||||
print(total)
|
||||
total2 = total
|
||||
all_cubes = {(x,y,z) for x in range(22) for y in range(22) for z in range(22)}
|
||||
empty_cubes = all_cubes-scanned_cubes
|
||||
q = [(0,0,0)]
|
||||
while q:
|
||||
c = q.pop()
|
||||
if c in empty_cubes:
|
||||
empty_cubes.remove(c)
|
||||
q.extend(adj_cubes(c))
|
||||
for cube in empty_cubes:
|
||||
p2 += 6
|
||||
for adj in adj_cubes(cube):
|
||||
if adj in scanned_cubes:
|
||||
p2 -= 2
|
||||
scanned_cubes.add(cube)
|
||||
print("Part 2:",p2)
|
||||
Loading…
Add table
Add a link
Reference in a new issue