From 57d5ce2ca8b62c3534a670b87dd9b3c1ae7b0ebc Mon Sep 17 00:00:00 2001 From: Tom Weber Date: Tue, 6 Dec 2022 14:37:23 +0100 Subject: [PATCH] day5 --- python/day5/bsp.txt | 9 + python/day5/day5_1.py | 44 ++++ python/day5/day5_2.py | 45 ++++ python/day5/input.txt | 513 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 611 insertions(+) create mode 100644 python/day5/bsp.txt create mode 100644 python/day5/day5_1.py create mode 100644 python/day5/day5_2.py create mode 100644 python/day5/input.txt diff --git a/python/day5/bsp.txt b/python/day5/bsp.txt new file mode 100644 index 0000000..e98aba4 --- /dev/null +++ b/python/day5/bsp.txt @@ -0,0 +1,9 @@ + [D] +[N] [C] +[Z] [M] [P] + 1 2 3 + +move 1 from 2 to 1 +move 3 from 1 to 3 +move 2 from 2 to 1 +move 1 from 1 to 2 \ No newline at end of file diff --git a/python/day5/day5_1.py b/python/day5/day5_1.py new file mode 100644 index 0000000..978a8df --- /dev/null +++ b/python/day5/day5_1.py @@ -0,0 +1,44 @@ +lines = open("input.txt", "r").read().splitlines() + + +def get_instr_state(lines): + state = [] + instr = [] + flag = False + for line in lines: + if line == "": + flag = True + continue + if not flag: + state.append(line) + else: + instr.append(line) + return state, instr + + +def parse_state(state): + new_state = [] + for old_line in state: + new_line = [] + for i in range(1, len(old_line), 4): + new_line.append(old_line[i]) + new_state.append(new_line) + new_state = list(map(list, zip(*new_state))) + final_state = [] + for line in new_state: + final_state.append([x for x in line if x != " "]) + return final_state + + +raw_state, instr = get_instr_state(lines) +state = parse_state(raw_state) + +for i in instr: + i = i.split(" ") + x, y, z = int(i[1]), int(i[3]), int(i[5]) + for j in range(x): + elem = state[y - 1].pop(0) + state[z - 1].insert(0, elem) + +for s in state: + print(s[0], end="") diff --git a/python/day5/day5_2.py b/python/day5/day5_2.py new file mode 100644 index 0000000..292bcb1 --- /dev/null +++ b/python/day5/day5_2.py @@ -0,0 +1,45 @@ +lines = open("input.txt", "r").read().splitlines() + + +def get_instr_state(lines): + state = [] + instr = [] + flag = False + for line in lines: + if line == "": + flag = True + continue + if not flag: + state.append(line) + else: + instr.append(line) + return state, instr + + +def parse_state(state): + new_state = [] + for old_line in state: + new_line = [] + for i in range(1, len(old_line), 4): + new_line.append(old_line[i]) + new_state.append(new_line) + new_state = list(map(list, zip(*new_state))) + final_state = [] + for line in new_state: + final_state.append([x for x in line if x != " "]) + return final_state + + +raw_state, instr = get_instr_state(lines) +state = parse_state(raw_state) + +for i in instr: + i = i.split(" ") + x, y, z = int(i[1]), int(i[3]), int(i[5]) + elem = state[y - 1][:x] + state[z - 1] = elem + state[z - 1] + for i in range(x): + state[y - 1].pop(0) + +for s in state: + print(s[0], end="") diff --git a/python/day5/input.txt b/python/day5/input.txt new file mode 100644 index 0000000..936e8dc --- /dev/null +++ b/python/day5/input.txt @@ -0,0 +1,513 @@ + [B] [L] [S] + [Q] [J] [C] [W] [F] + [F] [T] [B] [D] [P] [P] + [S] [J] [Z] [T] [B] [C] [H] + [L] [H] [H] [Z] [G] [Z] [G] [R] +[R] [H] [D] [R] [F] [C] [V] [Q] [T] +[C] [J] [M] [G] [P] [H] [N] [J] [D] +[H] [B] [R] [S] [R] [T] [S] [R] [L] + 1 2 3 4 5 6 7 8 9 + +move 8 from 7 to 1 +move 9 from 1 to 9 +move 4 from 5 to 4 +move 4 from 6 to 1 +move 3 from 8 to 5 +move 6 from 5 to 9 +move 1 from 5 to 1 +move 4 from 4 to 9 +move 7 from 3 to 7 +move 6 from 7 to 3 +move 1 from 8 to 7 +move 2 from 7 to 6 +move 1 from 8 to 9 +move 1 from 6 to 3 +move 4 from 3 to 5 +move 5 from 1 to 3 +move 1 from 1 to 8 +move 2 from 3 to 4 +move 1 from 4 to 1 +move 7 from 9 to 2 +move 1 from 6 to 3 +move 2 from 1 to 9 +move 20 from 9 to 7 +move 6 from 4 to 9 +move 1 from 2 to 9 +move 6 from 9 to 4 +move 1 from 4 to 6 +move 1 from 8 to 6 +move 1 from 4 to 7 +move 5 from 2 to 3 +move 2 from 6 to 4 +move 3 from 9 to 5 +move 5 from 3 to 5 +move 3 from 3 to 8 +move 3 from 5 to 6 +move 1 from 9 to 8 +move 5 from 4 to 5 +move 3 from 4 to 9 +move 1 from 8 to 2 +move 2 from 8 to 2 +move 11 from 5 to 6 +move 16 from 7 to 1 +move 2 from 1 to 7 +move 14 from 6 to 1 +move 11 from 1 to 6 +move 2 from 1 to 4 +move 4 from 3 to 4 +move 9 from 2 to 4 +move 2 from 4 to 8 +move 2 from 5 to 3 +move 9 from 4 to 7 +move 2 from 3 to 2 +move 1 from 2 to 7 +move 1 from 8 to 4 +move 4 from 1 to 4 +move 1 from 9 to 1 +move 7 from 4 to 7 +move 2 from 6 to 5 +move 1 from 8 to 6 +move 1 from 4 to 2 +move 10 from 1 to 6 +move 5 from 7 to 3 +move 1 from 4 to 7 +move 2 from 1 to 2 +move 2 from 2 to 4 +move 4 from 3 to 4 +move 18 from 7 to 6 +move 6 from 6 to 4 +move 1 from 7 to 4 +move 1 from 7 to 6 +move 11 from 4 to 5 +move 14 from 5 to 9 +move 1 from 8 to 7 +move 8 from 6 to 2 +move 2 from 4 to 5 +move 7 from 9 to 1 +move 6 from 9 to 7 +move 5 from 1 to 8 +move 1 from 3 to 6 +move 10 from 6 to 3 +move 1 from 9 to 6 +move 1 from 5 to 4 +move 4 from 3 to 8 +move 1 from 5 to 9 +move 9 from 2 to 3 +move 1 from 9 to 5 +move 4 from 8 to 4 +move 1 from 5 to 3 +move 5 from 8 to 7 +move 5 from 7 to 2 +move 3 from 4 to 1 +move 8 from 6 to 5 +move 1 from 7 to 9 +move 4 from 1 to 3 +move 2 from 4 to 6 +move 5 from 5 to 2 +move 4 from 6 to 9 +move 1 from 1 to 2 +move 1 from 5 to 6 +move 7 from 2 to 8 +move 5 from 6 to 8 +move 4 from 7 to 9 +move 15 from 3 to 9 +move 1 from 7 to 3 +move 1 from 5 to 3 +move 6 from 2 to 6 +move 1 from 5 to 2 +move 2 from 3 to 9 +move 1 from 6 to 8 +move 5 from 8 to 9 +move 2 from 3 to 8 +move 3 from 3 to 6 +move 11 from 9 to 4 +move 1 from 2 to 1 +move 2 from 8 to 4 +move 1 from 1 to 4 +move 7 from 4 to 7 +move 9 from 6 to 3 +move 4 from 7 to 8 +move 4 from 7 to 6 +move 19 from 9 to 4 +move 7 from 8 to 5 +move 5 from 3 to 6 +move 6 from 6 to 9 +move 3 from 3 to 5 +move 1 from 3 to 9 +move 8 from 4 to 5 +move 2 from 9 to 6 +move 3 from 8 to 2 +move 1 from 8 to 4 +move 1 from 2 to 5 +move 19 from 4 to 1 +move 2 from 5 to 7 +move 2 from 2 to 4 +move 13 from 5 to 2 +move 1 from 5 to 1 +move 2 from 6 to 9 +move 1 from 8 to 7 +move 9 from 9 to 3 +move 2 from 3 to 8 +move 1 from 4 to 2 +move 5 from 6 to 7 +move 1 from 4 to 6 +move 2 from 8 to 7 +move 7 from 1 to 5 +move 1 from 6 to 7 +move 10 from 1 to 8 +move 1 from 1 to 3 +move 1 from 1 to 2 +move 6 from 5 to 3 +move 4 from 5 to 3 +move 5 from 7 to 1 +move 3 from 1 to 2 +move 4 from 7 to 5 +move 8 from 3 to 6 +move 2 from 1 to 7 +move 4 from 5 to 8 +move 7 from 3 to 5 +move 3 from 7 to 2 +move 1 from 7 to 3 +move 12 from 2 to 8 +move 23 from 8 to 2 +move 16 from 2 to 6 +move 1 from 9 to 6 +move 7 from 5 to 7 +move 7 from 2 to 4 +move 2 from 3 to 8 +move 1 from 1 to 9 +move 5 from 8 to 1 +move 2 from 3 to 9 +move 2 from 7 to 1 +move 4 from 1 to 3 +move 4 from 7 to 2 +move 2 from 1 to 4 +move 11 from 2 to 9 +move 3 from 3 to 4 +move 1 from 9 to 1 +move 2 from 2 to 7 +move 4 from 4 to 8 +move 2 from 9 to 5 +move 2 from 5 to 7 +move 4 from 4 to 6 +move 1 from 3 to 8 +move 1 from 9 to 8 +move 4 from 4 to 2 +move 2 from 1 to 3 +move 1 from 8 to 4 +move 2 from 3 to 5 +move 3 from 9 to 7 +move 2 from 8 to 9 +move 1 from 9 to 6 +move 2 from 7 to 3 +move 2 from 8 to 1 +move 1 from 4 to 9 +move 18 from 6 to 2 +move 1 from 6 to 5 +move 1 from 5 to 9 +move 18 from 2 to 3 +move 1 from 8 to 7 +move 2 from 5 to 9 +move 1 from 1 to 4 +move 3 from 2 to 1 +move 9 from 9 to 4 +move 7 from 4 to 6 +move 2 from 7 to 3 +move 2 from 4 to 9 +move 7 from 6 to 7 +move 3 from 7 to 2 +move 7 from 6 to 3 +move 2 from 6 to 9 +move 24 from 3 to 9 +move 2 from 6 to 8 +move 1 from 4 to 2 +move 2 from 8 to 5 +move 31 from 9 to 3 +move 6 from 7 to 4 +move 35 from 3 to 7 +move 1 from 1 to 8 +move 1 from 5 to 7 +move 1 from 5 to 4 +move 1 from 3 to 9 +move 1 from 8 to 2 +move 3 from 1 to 7 +move 7 from 4 to 5 +move 1 from 9 to 8 +move 4 from 5 to 6 +move 2 from 5 to 2 +move 6 from 2 to 5 +move 2 from 5 to 7 +move 2 from 2 to 1 +move 2 from 5 to 4 +move 1 from 8 to 4 +move 3 from 4 to 6 +move 4 from 6 to 7 +move 1 from 5 to 2 +move 2 from 6 to 9 +move 1 from 6 to 4 +move 1 from 4 to 8 +move 2 from 9 to 6 +move 1 from 8 to 9 +move 34 from 7 to 9 +move 6 from 7 to 3 +move 1 from 7 to 2 +move 1 from 5 to 8 +move 1 from 8 to 6 +move 6 from 7 to 4 +move 1 from 7 to 3 +move 7 from 3 to 5 +move 6 from 4 to 6 +move 31 from 9 to 1 +move 3 from 5 to 7 +move 24 from 1 to 3 +move 1 from 2 to 4 +move 3 from 9 to 1 +move 14 from 3 to 5 +move 1 from 4 to 3 +move 1 from 9 to 7 +move 8 from 3 to 7 +move 1 from 2 to 9 +move 7 from 1 to 5 +move 3 from 6 to 8 +move 3 from 6 to 1 +move 1 from 1 to 3 +move 4 from 3 to 2 +move 4 from 2 to 3 +move 2 from 5 to 1 +move 9 from 7 to 4 +move 1 from 6 to 5 +move 1 from 1 to 7 +move 3 from 8 to 9 +move 5 from 4 to 2 +move 3 from 2 to 3 +move 1 from 2 to 3 +move 2 from 4 to 1 +move 2 from 9 to 4 +move 1 from 9 to 3 +move 1 from 6 to 1 +move 1 from 9 to 6 +move 25 from 5 to 4 +move 4 from 1 to 9 +move 2 from 3 to 7 +move 2 from 6 to 9 +move 2 from 9 to 5 +move 6 from 7 to 1 +move 5 from 3 to 6 +move 10 from 4 to 3 +move 10 from 4 to 8 +move 2 from 4 to 2 +move 5 from 1 to 9 +move 2 from 6 to 4 +move 6 from 9 to 6 +move 7 from 6 to 4 +move 3 from 9 to 4 +move 3 from 2 to 4 +move 4 from 3 to 8 +move 2 from 5 to 3 +move 10 from 4 to 9 +move 4 from 9 to 7 +move 5 from 9 to 5 +move 4 from 5 to 1 +move 9 from 4 to 6 +move 10 from 1 to 3 +move 1 from 5 to 4 +move 3 from 4 to 5 +move 2 from 5 to 7 +move 1 from 7 to 3 +move 1 from 6 to 9 +move 11 from 8 to 6 +move 14 from 6 to 5 +move 1 from 4 to 7 +move 7 from 5 to 3 +move 3 from 5 to 4 +move 2 from 9 to 5 +move 2 from 4 to 3 +move 2 from 7 to 4 +move 11 from 3 to 9 +move 2 from 8 to 2 +move 2 from 2 to 3 +move 1 from 8 to 2 +move 1 from 2 to 9 +move 3 from 4 to 5 +move 2 from 6 to 9 +move 1 from 1 to 8 +move 10 from 9 to 7 +move 2 from 9 to 3 +move 23 from 3 to 9 +move 4 from 6 to 4 +move 9 from 5 to 6 +move 1 from 5 to 3 +move 5 from 6 to 7 +move 1 from 1 to 7 +move 1 from 3 to 9 +move 4 from 6 to 7 +move 1 from 8 to 7 +move 1 from 7 to 5 +move 1 from 5 to 1 +move 12 from 7 to 6 +move 9 from 9 to 3 +move 6 from 6 to 4 +move 8 from 7 to 3 +move 3 from 7 to 4 +move 6 from 3 to 1 +move 10 from 4 to 8 +move 10 from 8 to 7 +move 2 from 3 to 7 +move 9 from 3 to 8 +move 2 from 6 to 3 +move 10 from 7 to 1 +move 3 from 4 to 6 +move 5 from 8 to 5 +move 3 from 5 to 7 +move 1 from 3 to 2 +move 1 from 2 to 6 +move 6 from 9 to 1 +move 12 from 1 to 3 +move 3 from 6 to 9 +move 3 from 1 to 7 +move 1 from 3 to 2 +move 7 from 1 to 7 +move 1 from 2 to 7 +move 2 from 6 to 4 +move 1 from 4 to 5 +move 3 from 8 to 7 +move 2 from 6 to 3 +move 2 from 6 to 1 +move 1 from 3 to 8 +move 5 from 3 to 4 +move 2 from 8 to 5 +move 14 from 7 to 4 +move 1 from 3 to 2 +move 1 from 3 to 7 +move 7 from 7 to 4 +move 2 from 5 to 3 +move 2 from 1 to 4 +move 9 from 4 to 6 +move 1 from 1 to 2 +move 4 from 9 to 4 +move 8 from 9 to 3 +move 2 from 2 to 7 +move 13 from 4 to 8 +move 4 from 4 to 1 +move 2 from 7 to 6 +move 12 from 3 to 2 +move 11 from 2 to 9 +move 6 from 4 to 9 +move 18 from 9 to 4 +move 2 from 1 to 6 +move 6 from 8 to 1 +move 13 from 6 to 5 +move 8 from 4 to 5 +move 1 from 2 to 9 +move 8 from 1 to 4 +move 7 from 4 to 8 +move 4 from 3 to 5 +move 10 from 8 to 5 +move 13 from 5 to 8 +move 12 from 4 to 5 +move 2 from 9 to 8 +move 29 from 5 to 9 +move 24 from 9 to 2 +move 23 from 2 to 4 +move 5 from 9 to 2 +move 7 from 5 to 7 +move 1 from 5 to 1 +move 7 from 4 to 8 +move 14 from 8 to 1 +move 5 from 2 to 6 +move 16 from 4 to 7 +move 8 from 1 to 6 +move 1 from 2 to 8 +move 20 from 7 to 6 +move 11 from 6 to 4 +move 3 from 1 to 5 +move 3 from 4 to 3 +move 8 from 4 to 9 +move 8 from 6 to 1 +move 2 from 1 to 4 +move 3 from 5 to 2 +move 12 from 8 to 2 +move 1 from 7 to 1 +move 1 from 3 to 5 +move 1 from 7 to 8 +move 1 from 7 to 3 +move 12 from 2 to 8 +move 13 from 6 to 4 +move 2 from 1 to 9 +move 3 from 2 to 6 +move 3 from 9 to 7 +move 5 from 9 to 1 +move 4 from 6 to 4 +move 2 from 3 to 6 +move 1 from 5 to 9 +move 1 from 6 to 7 +move 9 from 1 to 5 +move 11 from 8 to 3 +move 1 from 6 to 8 +move 3 from 7 to 1 +move 1 from 8 to 7 +move 2 from 8 to 9 +move 7 from 1 to 2 +move 17 from 4 to 7 +move 1 from 8 to 6 +move 4 from 7 to 2 +move 4 from 9 to 7 +move 4 from 2 to 3 +move 1 from 1 to 4 +move 2 from 4 to 3 +move 9 from 5 to 4 +move 1 from 6 to 8 +move 6 from 2 to 1 +move 5 from 1 to 9 +move 9 from 4 to 3 +move 1 from 4 to 6 +move 2 from 9 to 7 +move 1 from 1 to 5 +move 1 from 2 to 7 +move 1 from 8 to 9 +move 1 from 6 to 8 +move 1 from 5 to 4 +move 1 from 8 to 7 +move 23 from 3 to 7 +move 36 from 7 to 6 +move 33 from 6 to 1 +move 1 from 4 to 8 +move 7 from 1 to 5 +move 1 from 8 to 1 +move 3 from 7 to 2 +move 24 from 1 to 3 +move 7 from 7 to 3 +move 3 from 5 to 1 +move 4 from 5 to 3 +move 1 from 9 to 8 +move 2 from 9 to 6 +move 1 from 8 to 5 +move 3 from 2 to 5 +move 30 from 3 to 5 +move 1 from 6 to 7 +move 6 from 1 to 8 +move 7 from 3 to 2 +move 1 from 7 to 5 +move 2 from 3 to 2 +move 2 from 6 to 8 +move 1 from 6 to 1 +move 7 from 5 to 8 +move 8 from 8 to 7 +move 20 from 5 to 8 +move 2 from 9 to 7 +move 8 from 2 to 1 +move 7 from 7 to 3 +move 1 from 2 to 1 +move 3 from 7 to 9 +move 4 from 8 to 3 +move 5 from 5 to 6 +move 1 from 5 to 9 +move 4 from 9 to 4 +move 1 from 5 to 9 +move 2 from 3 to 6 +move 1 from 5 to 8 +move 7 from 6 to 3 +move 1 from 4 to 1 +move 7 from 3 to 2 +move 3 from 3 to 5 +move 2 from 4 to 7 \ No newline at end of file