Gladvent

Hex Package Hex.pm Hex Docs GitHub Workflow Status

An Advent Of Code runner for Gleam

This library is intended to be imported to your gleam project and used as a command runner for your advent of code project in gleam.

To add this library to your project run: gleam add gladvent and add import gladvent to your main gleam file.

Using the library

This library provides 2 options to run your advent of code solvers:

  1. The easy way: simply add gladvent.main() to the end of your project’s main function.
  2. Create your own Map(Int, #(fn(String) -> Int, fn(String) -> Int)) and pass it to gladvent.execute

Available commands

This project provides your application with 2 commands, new and run:

Note:

Seeing help messages

General Workflow

Where X is the day you’d like to add (when using gladvent.main()):

Note: this method requires all day solutions be in src/days/ with filenames day_X.gleam, each solution module containing fn pt_1(String) -> Int and a fn pt_2(String) -> Int

  1. run gleam run new X
  2. add your input to input/day_X.txt
  3. add your code to src/days/day_X.gleam
  4. run gleam run run X

FAQ

Why did you make this?

It seemed fun, I like small command line utilities and I wanted a way to get advent of code done in gleam without having the additional overhead of lots of copy-pasting and connecting things to get it to run

Why does this not download the input from the advent of code website?

A few reasons:

  1. I wanted to keep this utility as simple as possible to start with
  2. I like the advent of code website and I felt like it was a shame to circumvent visiting it, especially since you should access it to read the daily challenge. On top of that, I would like to avoid spamming the advent of code api if possible.

Why run as a command line utility and not just use unit tests?

I thought a lot about that and I prefer the overall interactivity of a CLI better, as well as allowing for endless runs or runs with configurable timeouts. Having it run as part of eunit doesnt provide as much flexibility as I would like.

Search Document