Update advent of code
This commit is contained in:
74
2021/22.py
Normal file
74
2021/22.py
Normal file
@@ -0,0 +1,74 @@
|
||||
# with open("./2021/22.test") as input_file:
|
||||
with open("./2021/22.input") as input_file:
|
||||
input_data = input_file.read()
|
||||
|
||||
instructions_raw = input_data.split("\n")
|
||||
|
||||
print(instructions_raw)
|
||||
|
||||
instructions_parsed = []
|
||||
for one_instruction in instructions_raw:
|
||||
one_parsed = {}
|
||||
one_parsed['instruction'] = one_instruction.split(" ")[0]
|
||||
one_parsed['x_min'] = int(one_instruction.split(" ")[1].split(",")[0].split('=')[1].split('..')[0])
|
||||
one_parsed['x_max'] = int(one_instruction.split(" ")[1].split(",")[0].split('=')[1].split('..')[1])
|
||||
one_parsed['y_min'] = int(one_instruction.split(" ")[1].split(",")[1].split('=')[1].split('..')[0])
|
||||
one_parsed['y_max'] = int(one_instruction.split(" ")[1].split(",")[1].split('=')[1].split('..')[1])
|
||||
one_parsed['z_min'] = int(one_instruction.split(" ")[1].split(",")[2].split('=')[1].split('..')[0])
|
||||
one_parsed['z_max'] = int(one_instruction.split(" ")[1].split(",")[2].split('=')[1].split('..')[1])
|
||||
|
||||
print(one_parsed)
|
||||
|
||||
instructions_parsed.append(one_parsed)
|
||||
|
||||
on_counter = 0
|
||||
on_array = {}
|
||||
for one_instruction in instructions_parsed:
|
||||
print(one_instruction)
|
||||
instruction_counter = 0
|
||||
|
||||
x_min = one_instruction['x_min']
|
||||
x_max = one_instruction['x_max']
|
||||
y_min = one_instruction['y_min']
|
||||
y_max = one_instruction['y_max']
|
||||
z_min = one_instruction['z_min']
|
||||
z_max = one_instruction['z_max']
|
||||
|
||||
# # Constrain to -50..50
|
||||
# x_min = max(one_instruction['x_min'], -50)
|
||||
# x_max = min(one_instruction['x_max'], 50)
|
||||
# y_min = max(one_instruction['y_min'], -50)
|
||||
# y_max = min(one_instruction['y_max'], 50)
|
||||
# z_min = max(one_instruction['z_min'], -50)
|
||||
# z_max = min(one_instruction['z_max'], 50)
|
||||
|
||||
for x in range(x_min, x_max + 1):
|
||||
for y in range(y_min, y_max + 1):
|
||||
for z in range(z_min, z_max + 1):
|
||||
if x not in on_array.keys():
|
||||
on_array[x] = {}
|
||||
if y not in on_array[x].keys():
|
||||
on_array[x][y] = {}
|
||||
if z not in on_array[x][y].keys():
|
||||
on_array[x][y][z] = ""
|
||||
|
||||
if one_instruction['instruction'] == 'on' and on_array[x][y][z] != 'on':
|
||||
on_counter += 1
|
||||
instruction_counter += 1
|
||||
if one_instruction['instruction'] == 'off' and on_array[x][y][z] == 'on':
|
||||
on_counter -= 1
|
||||
instruction_counter -= 1
|
||||
on_array[x][y][z] = one_instruction['instruction']
|
||||
print(f'''Processing ({x:6}, {y:6}, {z:6}) {on_counter:6}''', end="\r")
|
||||
print("\r", instruction_counter)
|
||||
# on_counter = 0
|
||||
# for x in on_array.keys():
|
||||
# for y in on_array[x].keys():
|
||||
# for z in on_array[x][y][z].keys():
|
||||
# print(f'''Counting ({x:6}, {y:6}, {z:6})''', end="\r")
|
||||
# on_counter += 1
|
||||
|
||||
print(on_counter)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user