From 1676b57c8e4eb6d5e67789fe4cddfb7408993f46 Mon Sep 17 00:00:00 2001 From: haskal Date: Sun, 6 Dec 2020 01:46:18 -0500 Subject: [PATCH] update readme --- README.md | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/README.md b/README.md index 039e0a2..de9a846 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,79 @@ # haskal's advent of code 2020 solutions sharks + +## a guide to this repo + +### `(pregexp #px"([0-9]+).rkt" (list _ day))` + +these are the solution files for `day`. some of them have two versions, click on the history button +to view both. the first version is the original solution i wrote, and the second version contains +some cleanup to make the code nicer. day 1 doesn't have an original version because i didn't commit +it. other days may not have a cleaned up version if i didn't think any cleanup needed to be done + +the code aims to be as efficient as needed, but prioritizes readability and conciseness. i want to +create a good demo of using racket and its available features to solve programming problems quickly +and cleanly + +### `(or "LICENSE" "COPYING")` + +the license is GPL 3.0 or later, including solutions and scripts + +### `"inputs/"` + +an empty folder, this is where scripts put input files + +### `"scripts/aoc-lib.rkt"` + +this is a collection of functions for interacting with the AoC server to fetch challenges, submit +answers, get leaderboards, and track progress (in a local file called `.status.rktd`) + +scripts expect some environment variables to be present + - `AOC_SESSION`: a session token for your account. log in, then copy the `session` cookie + - `AOC_YEAR`: the challenge year + - `AOC_LEADERBOARD`: your leaderboard ID, used for plot + +### `"scripts/aoc.rkt"` + +this is included by the template and goes into every solution by default. it exports a function to +report answers to the challenge server, and useful libraries for challenge code to use + +### `"scripts/countdown"` + +counts down to the next challenge then initializes it from a template, downloads the input file, and +displays the challenge text in the terminal + +### `"scripts/get-challenge"` + +a CLI application for viewing challenges. takes 1 argument for day. displays somewhat styled +challenge text to the terminal (requires 256color) + +### `"scripts/get-input"` + +downloads the input for day `n` to `inputs/n` + +### `"scripts/make-day"` + +creates a new solution file from template and downloads the input for a given day + +### `"scripts/plot"` + +plots the scores of everyone on a private leaderboard over time, defaults to displaying the plot in +a window + +### `(or "scripts/plot.scrbl" "scripts/plot.css")` + +define a webpage (rendered with scribble) to display the plot generated by `scripts/plot`. you can +render it with `scribble --dest --style plot.css plot.scrbl` + +the plot for my leaderboard is available at + +### `"scripts/submit-answer"` + +takes a day, level, and answer and submits it. returns what the server responded + + +### `"scripts/template.rktrkt"` + +a template (in scribble) defining the solution code for a day. should be templated with the variable +`day` specifying the day