Skip to content

VitamintK/wang-aoc-cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 

Repository files navigation

wang-aoc-cli

Kevin Wang's CLI tool for advent of code

There are already, uh, 143492 different cmdline tools for Advent of Code.
See: https://github.com/Bogdanp/awesome-advent-of-code#tools-and-utilities

However, this one is unique in that I am making it.

Due to this, it is bespoke for the way I do AOC, e.g. I use .in files to store inputs, and I write my programs to get their input from stdin and write their output to stdout.

wimglenn/advent-of-code-data seems to be one of the most popular and polished tools, and I used it for inspiration and its approach and some code for authing to AOC ( wimglenn/advent-of-code-wim#1 )

Installation

  • Clone the repo
  • cd into the repo
  • install with pip: pip install . or pip install -e . (the latter lets you edit the tool without re-installing after every modification.)

Setup

Set your session cookie (see instructions here to get it). Session cookie needed to get your real input and to submit answers.

> aoc auth 1243abce4a567bc4e65a7bcea12345cbea4567cbe56a7b5c679ea5578cea

Set your openai API key. This is needed to parse the example input and answer from the problem description. Using gpt 4 turbo, it costs about $0.10 per parse. (is this like using a flamethrower to kill a mosquito? maybe, but... the flamethrower is so easy to use!)

> aoc openai
enter OpenAI key: e4a567bc4e65a7bcea16fgdfhjg2345cbea4567cbe

Usage

> aoc day 12
> aoc make
> aoc daemon

This tells the tool that the day is 12,
creates the day12.py and day12_real.in and day12_example.in files (with day12.py copied from boilerplate.py),
and waits until midnight, at which point it (1) downloads the input and saves it to day12_real.in, (2) downloads the problem description and saves to day12_description.html, (3) attempts to parse the example input and expected answer from that html using ChatGPT, and saves those to day12_example.in and day12_example.answer.

Then,

> aoc run
  • runs python day12.py < day12_example.in
  • checks the answer (assumed to be the last line of stdout) by comparing it to day12_example.answer
  • runs python day12.py < day12_real.in
  • prompts the user as to whether they want to submit the answer to aoc, defaulting to "yes" if the example answer was correct, and no otherwise.

Example:

> aoc run
level not specified. Setting level to 1
Running on example:
62
Answer is correct: 62

Running on real input:
46334

The answer for the example input answer was correct.
The answer for the real input is: 46334
Submit real answer? [Y/n] y
<p>That's the right answer!  You are <span class="day-success">one gold star</span> closer to restoring snow operations. You achieved <em>rank 3</em> on <a href="/2023/leaderboard/day/18">this star's leaderboard</a> and gained <em>98 points</em>! <a href="/2023/day/18#part2">[Continue to Part Two]</a></p>

For part 2, you need to run aoc run 2 so that the tool knows which part it's submitting to.

About

Kevin Wang's CLI tool for advent of code

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages