BFS, baby. 2 things got me. * S position was not (0,0) in the puzzle input. Such embarrasment to loose time over something so stupid. * I asumed the elevation was fixed to to increase AND DECREASE by 1. From the problem description: > To avoid needing to get out your climbing gear, the elevation of the > destination square can be at most one higher than the elevation of > your current square; that is, if your current elevation is m, you > could step to elevation n, but not to elevation o. _(This also means > that the elevation of the destination square can be much lower than > the elevation of your current square.)_ This means elevation only can _increase_ by one, but _decrease_ with more. So my wrong code: 0 <= abs(n - e) <= 1 got fixed with: n - e <= 1 For pt 2, I reused the loop to find S to collect all "a" positions, and looped them as starting points. Execution time is not the best, but it works. |
||
|---|---|---|
| .. | ||
| output | ||
| aoc.py | ||
| README.md | ||
Advent of Code 2022
Solutions for #aoc2022 in Python 3 (3.13.4).
Programming setup:
- Lenovo Thinkpad T14
- OpenSUSE Tumbleweed with labwc
- Helix editor
- Vivaldi
- Foot
Help scripts
Display all solved puzzles:
python aoc.py
To bootstrap a new puzzle (creates input/<day_no>.txt and output/day_<day_no>.py):
python aoc.py <day_no> new
Manually copy the puzzle input from https://adventofcode.com and paste it in input/<day_no>.txt
to start coding.
wl-paste > input/<day_no>.txt
Solve separate puzzle (replace XX with the puzzle number):
python -m output.day_XX
Solve separate puzzle using stdin (replace XX with the puzzle number):
wl-paste | python -m output.day_XX
cat tmpfile | python -m output.day_XX
Execute separate puzzle on file save (replace XX with the puzzle number):
ls output/*.py | entr -c -s 'wlpaste | python -m output.day_XX'
ls output/*.py | entr -c -s 'cat tmpfile | python -m output.day_XX'
ls output/*.py | entr -c -r python -m output.day_XX
(requires entr and wl-paste, Mac users can instead use pbpaste. If you
prefer X at Linux, use xclip -selection clipboard -o).
To lint files:
ls output/*.py | entr -r -c flake8 output --ignore=E741,E501,E203