advent-of-code/2016-python2
Anders Englöf Ytterström 31bb5b7006 Solve 2016:14 p1-2 "One-Time Pad"
Lost 60 minutes due to misinterpreting this in p2:

> *whenever* you generate a hash

The code initially only did the 2016 stretching for
the triplet hash, not the quintet hash. By doing it
to both, pt 2 is solved.

Not sure the lru cache actually speeds anything up.
Many on the subreddit used the approach to generate
the quintet first and look backwards 1000 times
for a matching quintet (since quintets are more
rare than triplets), this will most likely speed
things up.

Also, this solution do not store the found keys.
Many other solutions do, I believe this is some
presumptions.
2024-12-12 13:53:43 +01:00
..
output Solve 2016:14 p1-2 "One-Time Pad" 2024-12-12 13:53:43 +01:00
aoc.py Solve 2016:13 p1-2 "A Maze of Twisty Little Cubicles" 2024-12-12 13:53:43 +01:00
README.md Solve 2016:13 p1-2 "A Maze of Twisty Little Cubicles" 2024-12-12 13:53:43 +01:00

Advent of Code 2016

Solutions for #aoc2016 in Python 3 (3.12.7).

Setup

Since I want to remember, this is what was used to solve the puzzles.

  • Lenovo Thinkpad x260 laptop with Arch Linux.
  • Hyprland with gBar.
  • Editor: Zed.
  • Terminal: Alacritty.

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 '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