35 lines
1,001 B
Python
35 lines
1,001 B
Python
|
#!/usr/bin/env python
|
||
|
# 2021 - Advent Of Code - 10
|
||
|
|
||
|
def parse_file(file):
|
||
|
with open(file) as f:
|
||
|
i = 0
|
||
|
for line in f.readlines():
|
||
|
count_open = {'(': 0, '[': 0, '{': 0, '<': 0}
|
||
|
chunks = []
|
||
|
for c in line.strip():
|
||
|
if c in close_sign.values(): # open signs
|
||
|
chunks.append(c)
|
||
|
if c in close_sign:
|
||
|
last_open = chunks.pop()
|
||
|
if close_sign[c] != last_open:
|
||
|
print(f'found corrupted chunk at line {i}: {line.strip()}')
|
||
|
count_score[c] += 1
|
||
|
|
||
|
|
||
|
close_sign = {')': '(', ']': '[' , '}': '{', '>': '<'}
|
||
|
count_score = {')': 0, ']': 0, '}': 0, '>':0}
|
||
|
score_table = {')': 3, ']': 57, '}': 1197, '>':25137}
|
||
|
|
||
|
|
||
|
# parse_file('input_example.txt')
|
||
|
parse_file('input.txt')
|
||
|
# print_hmap(heightmap)
|
||
|
|
||
|
print(f'char score {count_score}')
|
||
|
score = 0
|
||
|
for c in close_sign:
|
||
|
score += count_score[c] * score_table[c]
|
||
|
|
||
|
print(f'score: {score}')
|