1
0
mirror of https://github.com/chylex/Advent-of-Code.git synced 2025-05-15 07:34:05 +02:00

Add 2022 - Day 5 - Part 1

This commit is contained in:
chylex 2022-12-12 23:08:42 +01:00
parent ca7b829db3
commit 94bfc58598
Signed by: chylex
GPG Key ID: 4DE42C8F19A80548
5 changed files with 575 additions and 2 deletions
2022
.idea/runConfigurations
05
utils
README.md

View File

@ -0,0 +1,24 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Day 05" type="PythonConfigurationType" factoryName="Python">
<module name="2022" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/05" />
<option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/05/main.py" />
<option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="false" />
<option name="MODULE_MODE" value="false" />
<option name="REDIRECT_INPUT" value="false" />
<option name="INPUT_FILE" value="" />
<method v="2" />
</configuration>
</component>

512
2022/05/input.txt Normal file
View File

@ -0,0 +1,512 @@
[H] [D] [P]
[W] [B] [C] [Z] [D]
[T] [J] [T] [J] [D] [J]
[H] [Z] [H] [H] [W] [S] [M]
[P] [F] [R] [P] [Z] [F] [W] [F]
[J] [V] [T] [N] [F] [G] [Z] [S] [S]
[C] [R] [P] [S] [V] [M] [V] [D] [Z]
[F] [G] [H] [Z] [N] [P] [M] [N] [D]
1 2 3 4 5 6 7 8 9
move 2 from 8 to 2
move 3 from 9 to 2
move 1 from 3 to 8
move 5 from 1 to 7
move 2 from 9 to 2
move 8 from 2 to 4
move 6 from 7 to 2
move 2 from 1 to 7
move 4 from 5 to 9
move 4 from 5 to 6
move 1 from 8 to 3
move 1 from 8 to 5
move 2 from 9 to 8
move 8 from 6 to 4
move 4 from 3 to 6
move 10 from 2 to 3
move 1 from 5 to 1
move 1 from 7 to 4
move 2 from 9 to 8
move 18 from 4 to 8
move 1 from 1 to 6
move 4 from 7 to 3
move 12 from 8 to 4
move 4 from 7 to 9
move 5 from 6 to 9
move 2 from 2 to 7
move 3 from 9 to 5
move 3 from 5 to 9
move 1 from 2 to 8
move 10 from 3 to 1
move 2 from 7 to 8
move 10 from 1 to 9
move 1 from 3 to 5
move 16 from 9 to 8
move 1 from 3 to 2
move 3 from 8 to 3
move 1 from 5 to 9
move 3 from 6 to 7
move 2 from 7 to 2
move 1 from 3 to 8
move 5 from 4 to 1
move 4 from 9 to 5
move 2 from 2 to 5
move 2 from 1 to 9
move 23 from 8 to 4
move 6 from 5 to 2
move 5 from 2 to 6
move 1 from 9 to 6
move 2 from 2 to 4
move 35 from 4 to 9
move 1 from 6 to 1
move 2 from 8 to 7
move 1 from 6 to 8
move 3 from 1 to 7
move 1 from 7 to 1
move 3 from 6 to 2
move 4 from 3 to 7
move 6 from 7 to 9
move 1 from 6 to 9
move 1 from 8 to 1
move 2 from 2 to 9
move 2 from 8 to 2
move 3 from 7 to 3
move 2 from 1 to 9
move 5 from 9 to 3
move 1 from 4 to 2
move 1 from 1 to 4
move 7 from 3 to 9
move 1 from 3 to 4
move 2 from 4 to 7
move 24 from 9 to 4
move 12 from 9 to 3
move 1 from 3 to 1
move 1 from 1 to 2
move 2 from 2 to 6
move 1 from 6 to 5
move 1 from 6 to 8
move 3 from 2 to 4
move 1 from 7 to 4
move 1 from 5 to 3
move 1 from 9 to 8
move 23 from 4 to 8
move 17 from 8 to 5
move 12 from 9 to 8
move 10 from 8 to 7
move 1 from 8 to 6
move 5 from 4 to 3
move 3 from 5 to 1
move 3 from 1 to 6
move 6 from 5 to 4
move 10 from 3 to 1
move 9 from 1 to 7
move 2 from 4 to 9
move 1 from 1 to 6
move 4 from 8 to 1
move 4 from 3 to 7
move 4 from 6 to 5
move 1 from 9 to 6
move 1 from 9 to 2
move 1 from 1 to 7
move 1 from 2 to 7
move 3 from 1 to 7
move 9 from 5 to 9
move 7 from 9 to 7
move 2 from 9 to 1
move 3 from 5 to 9
move 3 from 4 to 8
move 1 from 1 to 2
move 1 from 2 to 6
move 1 from 1 to 6
move 5 from 8 to 7
move 1 from 8 to 1
move 1 from 3 to 9
move 1 from 1 to 6
move 2 from 9 to 5
move 2 from 3 to 9
move 4 from 6 to 3
move 1 from 9 to 4
move 2 from 4 to 8
move 1 from 4 to 8
move 1 from 9 to 5
move 1 from 6 to 8
move 23 from 7 to 8
move 27 from 8 to 2
move 2 from 8 to 1
move 23 from 2 to 6
move 3 from 5 to 3
move 4 from 2 to 5
move 2 from 3 to 1
move 2 from 9 to 3
move 4 from 1 to 4
move 13 from 7 to 9
move 1 from 5 to 6
move 2 from 5 to 9
move 1 from 5 to 3
move 3 from 9 to 3
move 5 from 9 to 5
move 2 from 4 to 2
move 1 from 4 to 9
move 11 from 6 to 9
move 9 from 6 to 1
move 17 from 9 to 5
move 3 from 7 to 4
move 3 from 6 to 3
move 14 from 5 to 2
move 5 from 3 to 1
move 2 from 9 to 4
move 2 from 3 to 8
move 5 from 5 to 9
move 2 from 5 to 4
move 7 from 1 to 8
move 2 from 9 to 5
move 3 from 9 to 8
move 8 from 4 to 2
move 2 from 7 to 8
move 10 from 2 to 9
move 10 from 2 to 6
move 8 from 9 to 7
move 2 from 3 to 9
move 3 from 9 to 8
move 5 from 3 to 9
move 7 from 7 to 9
move 3 from 2 to 9
move 10 from 8 to 5
move 1 from 7 to 6
move 1 from 2 to 3
move 4 from 1 to 6
move 2 from 8 to 4
move 1 from 4 to 6
move 2 from 6 to 3
move 2 from 3 to 1
move 1 from 4 to 9
move 4 from 1 to 5
move 2 from 5 to 2
move 2 from 8 to 4
move 1 from 3 to 5
move 3 from 5 to 7
move 2 from 2 to 9
move 3 from 7 to 6
move 3 from 8 to 5
move 10 from 5 to 7
move 3 from 6 to 4
move 11 from 6 to 1
move 3 from 6 to 2
move 12 from 1 to 3
move 1 from 7 to 5
move 9 from 7 to 3
move 5 from 5 to 1
move 4 from 4 to 6
move 2 from 1 to 7
move 1 from 2 to 6
move 2 from 7 to 8
move 1 from 2 to 4
move 1 from 9 to 5
move 3 from 6 to 7
move 1 from 5 to 2
move 9 from 9 to 5
move 1 from 2 to 8
move 1 from 4 to 8
move 1 from 1 to 8
move 1 from 4 to 2
move 1 from 7 to 2
move 1 from 6 to 2
move 1 from 6 to 8
move 6 from 9 to 6
move 1 from 3 to 4
move 9 from 3 to 5
move 1 from 1 to 3
move 2 from 2 to 6
move 1 from 3 to 5
move 14 from 5 to 1
move 1 from 2 to 6
move 5 from 6 to 4
move 3 from 8 to 2
move 5 from 6 to 1
move 5 from 4 to 6
move 1 from 7 to 1
move 3 from 9 to 3
move 7 from 5 to 7
move 1 from 4 to 6
move 2 from 7 to 5
move 3 from 6 to 1
move 3 from 8 to 1
move 14 from 3 to 4
move 8 from 4 to 2
move 1 from 6 to 1
move 15 from 1 to 6
move 7 from 1 to 6
move 6 from 1 to 3
move 3 from 3 to 1
move 2 from 4 to 5
move 1 from 4 to 2
move 19 from 6 to 8
move 2 from 1 to 8
move 4 from 5 to 4
move 7 from 8 to 2
move 2 from 3 to 1
move 13 from 8 to 6
move 4 from 4 to 9
move 2 from 4 to 8
move 2 from 1 to 6
move 1 from 3 to 5
move 19 from 2 to 3
move 13 from 3 to 1
move 1 from 4 to 9
move 1 from 2 to 8
move 3 from 7 to 1
move 14 from 6 to 9
move 2 from 6 to 4
move 18 from 9 to 4
move 3 from 7 to 2
move 15 from 1 to 4
move 2 from 1 to 8
move 5 from 3 to 1
move 1 from 3 to 6
move 5 from 8 to 9
move 3 from 9 to 5
move 1 from 9 to 5
move 1 from 8 to 9
move 1 from 6 to 2
move 3 from 9 to 4
move 2 from 6 to 7
move 30 from 4 to 6
move 22 from 6 to 9
move 6 from 9 to 4
move 4 from 6 to 7
move 1 from 1 to 6
move 1 from 9 to 8
move 1 from 7 to 6
move 3 from 5 to 3
move 5 from 6 to 5
move 2 from 7 to 9
move 4 from 1 to 5
move 1 from 6 to 4
move 1 from 8 to 7
move 2 from 6 to 4
move 17 from 9 to 8
move 2 from 2 to 7
move 2 from 3 to 1
move 8 from 4 to 8
move 1 from 3 to 8
move 8 from 4 to 2
move 2 from 1 to 2
move 1 from 4 to 6
move 4 from 7 to 1
move 1 from 6 to 8
move 19 from 8 to 3
move 5 from 5 to 1
move 5 from 5 to 9
move 2 from 9 to 3
move 6 from 1 to 9
move 1 from 7 to 5
move 1 from 7 to 4
move 2 from 5 to 7
move 2 from 2 to 4
move 4 from 9 to 8
move 12 from 8 to 7
move 2 from 1 to 9
move 1 from 7 to 4
move 4 from 4 to 5
move 3 from 9 to 3
move 9 from 2 to 6
move 2 from 7 to 5
move 1 from 1 to 9
move 5 from 9 to 7
move 9 from 6 to 2
move 6 from 2 to 8
move 21 from 3 to 2
move 12 from 2 to 9
move 3 from 5 to 9
move 3 from 3 to 8
move 5 from 9 to 6
move 13 from 2 to 3
move 3 from 6 to 2
move 10 from 9 to 8
move 6 from 3 to 1
move 3 from 2 to 9
move 2 from 6 to 7
move 5 from 3 to 9
move 4 from 1 to 9
move 3 from 8 to 5
move 1 from 1 to 7
move 6 from 5 to 7
move 12 from 9 to 7
move 1 from 1 to 8
move 11 from 8 to 5
move 9 from 5 to 7
move 1 from 3 to 1
move 4 from 8 to 7
move 1 from 1 to 7
move 2 from 8 to 3
move 42 from 7 to 4
move 3 from 7 to 9
move 4 from 7 to 5
move 1 from 7 to 8
move 1 from 8 to 5
move 1 from 7 to 5
move 1 from 3 to 4
move 1 from 3 to 9
move 1 from 9 to 6
move 1 from 6 to 4
move 1 from 3 to 5
move 3 from 9 to 2
move 16 from 4 to 8
move 3 from 2 to 4
move 1 from 5 to 4
move 30 from 4 to 6
move 15 from 8 to 3
move 2 from 4 to 5
move 1 from 8 to 7
move 13 from 3 to 6
move 1 from 7 to 8
move 1 from 3 to 8
move 1 from 3 to 8
move 4 from 5 to 2
move 6 from 5 to 2
move 2 from 8 to 6
move 43 from 6 to 2
move 1 from 6 to 1
move 18 from 2 to 4
move 24 from 2 to 6
move 19 from 6 to 3
move 4 from 6 to 3
move 2 from 6 to 3
move 3 from 3 to 2
move 1 from 1 to 3
move 23 from 3 to 6
move 12 from 4 to 3
move 7 from 3 to 9
move 13 from 2 to 9
move 1 from 8 to 4
move 4 from 3 to 8
move 6 from 4 to 2
move 10 from 9 to 3
move 6 from 2 to 9
move 8 from 3 to 5
move 3 from 5 to 3
move 13 from 6 to 5
move 4 from 3 to 9
move 1 from 4 to 2
move 4 from 8 to 3
move 1 from 2 to 5
move 14 from 9 to 5
move 2 from 5 to 4
move 2 from 4 to 3
move 1 from 9 to 5
move 4 from 6 to 1
move 1 from 6 to 2
move 6 from 3 to 2
move 5 from 6 to 8
move 2 from 3 to 7
move 1 from 8 to 1
move 25 from 5 to 7
move 3 from 7 to 9
move 5 from 2 to 9
move 12 from 9 to 8
move 3 from 1 to 6
move 16 from 8 to 2
move 1 from 9 to 2
move 1 from 6 to 2
move 1 from 1 to 3
move 21 from 7 to 3
move 2 from 7 to 1
move 1 from 7 to 8
move 2 from 2 to 1
move 2 from 6 to 3
move 18 from 2 to 9
move 2 from 5 to 1
move 1 from 2 to 1
move 3 from 5 to 2
move 13 from 9 to 1
move 3 from 9 to 2
move 1 from 8 to 7
move 3 from 2 to 6
move 2 from 5 to 1
move 17 from 3 to 8
move 3 from 3 to 8
move 2 from 9 to 1
move 1 from 7 to 5
move 1 from 5 to 3
move 2 from 6 to 4
move 1 from 6 to 1
move 15 from 8 to 2
move 2 from 3 to 6
move 1 from 8 to 5
move 2 from 6 to 8
move 13 from 2 to 9
move 4 from 9 to 8
move 9 from 8 to 9
move 3 from 3 to 4
move 4 from 9 to 7
move 1 from 8 to 6
move 1 from 7 to 5
move 2 from 5 to 1
move 1 from 6 to 3
move 4 from 4 to 5
move 1 from 4 to 6
move 1 from 3 to 7
move 1 from 5 to 6
move 2 from 7 to 2
move 4 from 2 to 3
move 3 from 2 to 7
move 1 from 3 to 6
move 1 from 9 to 6
move 2 from 5 to 2
move 3 from 9 to 5
move 1 from 6 to 1
move 3 from 5 to 4
move 12 from 1 to 2
move 2 from 2 to 4
move 2 from 7 to 8
move 2 from 3 to 9
move 1 from 4 to 7
move 1 from 5 to 2
move 1 from 8 to 3
move 2 from 3 to 6
move 7 from 2 to 8
move 3 from 4 to 1
move 7 from 8 to 5
move 7 from 9 to 2
move 1 from 4 to 5
move 3 from 7 to 6
move 5 from 6 to 9
move 6 from 9 to 5
move 4 from 9 to 6
move 1 from 8 to 5
move 1 from 7 to 4
move 1 from 4 to 2
move 2 from 2 to 9
move 2 from 9 to 2
move 11 from 5 to 3
move 2 from 5 to 2
move 1 from 2 to 9
move 4 from 6 to 9
move 1 from 2 to 9
move 4 from 3 to 7
move 3 from 6 to 4
move 1 from 5 to 7
move 18 from 1 to 3
move 11 from 3 to 2
move 1 from 7 to 9
move 1 from 5 to 9
move 14 from 3 to 6
move 15 from 2 to 4
move 5 from 2 to 5
move 1 from 2 to 5
move 1 from 1 to 9
move 8 from 4 to 1
move 5 from 5 to 9
move 9 from 4 to 9
move 4 from 7 to 4
move 5 from 4 to 8
move 2 from 9 to 6
move 8 from 1 to 8
move 1 from 5 to 3
move 1 from 3 to 4
move 1 from 1 to 8
move 13 from 6 to 3
move 9 from 9 to 5
move 1 from 2 to 8
move 8 from 5 to 1
move 1 from 2 to 7

37
2022/05/main.py Normal file
View File

@ -0,0 +1,37 @@
import itertools
import re
from utils.input import read_input_lines
lines = iter(read_input_lines())
initial_stack_configuration_lines = list(itertools.takewhile(lambda line: len(line) > 0, lines))[:-1]
stacks = list()
for line in reversed(initial_stack_configuration_lines):
for stack_index, character_index in enumerate(range(1, len(line), 4)):
crate = line[character_index]
if crate == " ":
continue
for i in range(len(stacks), stack_index + 1):
stacks.append(list())
stacks[stack_index].append(crate)
for instruction in lines:
parsed = re.search(r"move (\d+) from (\d+) to (\d+)", instruction)
moved_count = int(parsed.group(1))
from_column = int(parsed.group(2)) - 1
to_column = int(parsed.group(3)) - 1
for i in range(moved_count):
moved_crate = stacks[from_column].pop()
stacks[to_column].append(moved_crate)
print("Top of each stack: ", end = "")
for stack in stacks:
print(stack[-1], end = "")

View File

@ -1,3 +1,3 @@
def read_input_lines() -> list[str]:
with open("input.txt") as f:
return [line.strip() for line in f.readlines()]
return [line.rstrip() for line in f.readlines()]

View File

@ -84,7 +84,7 @@ The versions should not matter, but I used Visual Studio 2019 with `MSVC v142 (1
| 2021 | 02 | Kotlin | / | 2022 | 02 | Python |
| 2021 | 03 | Kotlin | / | 2022 | 03 | Python |
| 2021 | 04 | Kotlin | / | 2022 | 04 | Python |
| 2021 | 05 | Kotlin | / | | | |
| 2021 | 05 | Kotlin | / | 2022 | 05 | Python |
| 2021 | 06 | Kotlin | / | | | |
| 2021 | 07 | Kotlin | / | | | |
| 2021 | 08 | Kotlin | / | | | |