xenia a51a25f50e | ||
---|---|---|
inputs | ||
scripts | ||
.gitignore | ||
1.rkt | ||
2.rkt | ||
3.rkt | ||
4.rkt | ||
5.rkt | ||
6.rkt | ||
7.rkt | ||
8.rkt | ||
9.rkt | ||
10.rkt | ||
COPYING | ||
LICENSE | ||
README.md |
README.md
haskal's advent of code 2020 solutions
sharks
third party packages used so far
curly-fn
andthreading
: allgraph
: day 7 +
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 thesession
cookieAOC_YEAR
: the challenge yearAOC_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 <dest> --style plot.css plot.scrbl
the plot for my leaderboard is available at https://joan.awoo.systems/aoc2020/
"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