advent-of-code/2022-python
Anders Englöf Ytterström 92df810943 Solve 2022 day 12 pt 1-2
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.
2025-11-30 19:17:15 +01:00
..
output Solve 2022 day 12 pt 1-2 2025-11-30 19:17:15 +01:00
aoc.py Inititate AOC 2022 in python 2025-11-30 19:17:15 +01:00
README.md Inititate AOC 2022 in python 2025-11-30 19:17:15 +01:00

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