Revenge, blast from the past etc! Had to learn Dijkstra's for this one. Was as stuck as one can be on AOC. This stopped my progress 2023, and kept me busy at least 20-30h this year (2024) as well. I never came past part 1, but got part 2 in minutes when I hit home. Turns out the initial queue was to blame, after studying Dijkstras, reading hints on the subreddit and tutorials in blogs. I was off-by-1 in costs, since I misplaced a read from the grid. I also struggled a really, really long time with a bug where I resetted the steps to aggresively. What helped me to figure it out was to create simpler test case grids and step-debug them. Example 1: 241 321 should give a least heat loss of 6 in pt1. Example 2: 11199 12199 99199 99131 99111 should give a least heat loss of 9 in pt2. |
||
|---|---|---|
| .. | ||
| output | ||
| .gitignore | ||
| aoc.py | ||
| README.md | ||
Advent of Code 2023
Solutions for #aoc2023 in Python 3 (3.11.5).
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> <puzzle_name>
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 'xclip -selection clipboard -o | 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