diff --git a/05/solution.py b/05/solution.py new file mode 100755 index 0000000..c5498d9 --- /dev/null +++ b/05/solution.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python3 + +import sys +import re +from collections import defaultdict + +insr = re.compile(r"move (\d+) from (\d+) to (\d+)") + +stacksA = defaultdict(bytearray) +stacksB = defaultdict(bytearray) + +for l in sys.stdin: + if "[" in l: + for i, c in enumerate(l[1::4], 1): + if c != ' ': + c = ord(c) + stacksA[i].append(c) + stacksB[i].append(c) + + im = insr.match(l) + if im: + n, f, t = map(int, im.groups()) + stacksA[t] = bytearray(reversed(stacksA[f][:n])) + stacksA[t] + stacksA[f] = stacksA[f][n:] + stacksB[t] = stacksB[f][:n] + stacksB[t] + stacksB[f] = stacksB[f][n:] + +print(f"""Silver: {"".join(chr(stacksA[i][0]) for i in sorted(stacksA))} +Gold: {"".join(chr(stacksB[i][0]) for i in sorted(stacksB))}""")