62 lines
1.5 KiB
Python
62 lines
1.5 KiB
Python
# with open("./2021/14.test") as input_file:
|
|
with open("./2021/14.input") as input_file:
|
|
input_data = input_file.read()
|
|
|
|
start_polymer = input_data.split("\n\n")[0]
|
|
|
|
polymer_rules = input_data.split("\n\n")[1].split("\n")
|
|
|
|
rules_dict = {}
|
|
for one_rule in polymer_rules:
|
|
rules_dict[one_rule.split(" -> ")[0]] = one_rule.split(" -> ")[1]
|
|
|
|
print(rules_dict)
|
|
|
|
counter = 1
|
|
while counter <= 10:
|
|
output_data = ""
|
|
|
|
for i in range(1, len(start_polymer)):
|
|
substring = start_polymer[i-1:i+1]
|
|
|
|
output_data += substring[0] + rules_dict[substring]
|
|
|
|
output_data += start_polymer[-1]
|
|
|
|
start_polymer = output_data
|
|
|
|
counter += 1
|
|
|
|
output_dict = {}
|
|
for i in range(len(start_polymer)):
|
|
if start_polymer[i] not in output_dict.keys():
|
|
output_dict[start_polymer[i]] = 0
|
|
output_dict[start_polymer[i]] += 1
|
|
|
|
print(output_dict)
|
|
print(max(output_dict.values()) - min(output_dict.values()))
|
|
|
|
while counter <= 40:
|
|
output_data = ""
|
|
|
|
for i in range(1, len(start_polymer)):
|
|
substring = start_polymer[i-1:i+1]
|
|
|
|
output_data += substring[0] + rules_dict[substring]
|
|
|
|
output_data += start_polymer[-1]
|
|
|
|
start_polymer = output_data
|
|
print(counter, end='\r')
|
|
counter += 1
|
|
|
|
output_dict = {}
|
|
for i in range(len(start_polymer)):
|
|
if start_polymer[i] not in output_dict.keys():
|
|
output_dict[start_polymer[i]] = 0
|
|
output_dict[start_polymer[i]] += 1
|
|
|
|
print(output_dict)
|
|
print(max(output_dict.values()) - min(output_dict.values()))
|
|
|