parent
24ee5520bf
commit
24886aee85
@ -1,2 +1,3 @@
|
|||||||
day*.txt
|
day*.txt
|
||||||
|
input*.txt
|
||||||
venv/
|
venv/
|
||||||
|
@ -0,0 +1,23 @@
|
|||||||
|
import string
|
||||||
|
|
||||||
|
with open("input5.txt") as f:
|
||||||
|
line = f.read().rstrip()
|
||||||
|
|
||||||
|
|
||||||
|
def react(line):
|
||||||
|
while True:
|
||||||
|
previous_length = len(line)
|
||||||
|
for letter in string.ascii_lowercase:
|
||||||
|
bi1 = letter + chr(ord(letter) ^ 0x20)
|
||||||
|
bi2 = bi1[::-1]
|
||||||
|
line = line.replace(bi1, "")
|
||||||
|
line = line.replace(bi2, "")
|
||||||
|
if len(line) == previous_length:
|
||||||
|
return line
|
||||||
|
|
||||||
|
|
||||||
|
print(len(react(line)))
|
||||||
|
print(min(
|
||||||
|
len(react(line.replace(letter, "").replace(chr(ord(letter) ^ 0x20), "")))
|
||||||
|
for letter in string.ascii_letters
|
||||||
|
))
|
@ -1,37 +1,30 @@
|
|||||||
import sys
|
with open("day10.txt", "rt") as f:
|
||||||
|
lines = [line.rstrip() for line in f]
|
||||||
|
|
||||||
CHARMAP = {"]": "[", ")": "(", "}": "{", ">": "<"}
|
CHARMAP = {"]": "[", ")": "(", "}": "{", ">": "<"}
|
||||||
SCOREMAP = {")": 3, "]": 57, "}": 1197, ">": 25137}
|
SCOREMAP = {")": 3, "]": 57, "}": 1197, ">": 25137}
|
||||||
SCOREMAP2 = {"(": 1, "[": 2, "{": 3, "<": 4}
|
SCOREMAP2 = {"(": 1, "[": 2, "{": 3, "<": 4}
|
||||||
|
|
||||||
|
error_score = 0
|
||||||
def main():
|
comp_scores = []
|
||||||
lines = [line.rstrip() for line in sys.stdin]
|
for line in lines:
|
||||||
error_score = 0
|
corrupted = None
|
||||||
comp_scores = []
|
state = []
|
||||||
for line in lines:
|
for char in line:
|
||||||
corrupted = None
|
if char in CHARMAP:
|
||||||
state = []
|
if state and state[-1] == CHARMAP[char]:
|
||||||
for char in line:
|
state.pop()
|
||||||
if char in CHARMAP:
|
|
||||||
if state and state[-1] == CHARMAP[char]:
|
|
||||||
state.pop()
|
|
||||||
else:
|
|
||||||
corrupted = char
|
|
||||||
break
|
|
||||||
else:
|
else:
|
||||||
state.append(char)
|
corrupted = char
|
||||||
if corrupted:
|
break
|
||||||
error_score += SCOREMAP[corrupted]
|
|
||||||
else:
|
else:
|
||||||
cs = 0
|
state.append(char)
|
||||||
for char in reversed(state):
|
if corrupted:
|
||||||
cs = cs * 5 + SCOREMAP2[char]
|
error_score += SCOREMAP[corrupted]
|
||||||
comp_scores.append(cs)
|
else:
|
||||||
print(error_score)
|
cs = 0
|
||||||
print(list(sorted(comp_scores))[len(comp_scores) // 2])
|
for char in reversed(state):
|
||||||
|
cs = cs * 5 + SCOREMAP2[char]
|
||||||
|
comp_scores.append(cs)
|
||||||
if __name__ == "__main__":
|
print(error_score)
|
||||||
main()
|
print(list(sorted(comp_scores))[len(comp_scores) // 2])
|
||||||
|
Loading…
Reference in new issue