Code to solve the Advent of Code puzzles. This year, I'm using the puzzles to develop my skills in Haskell.
Learn you a Haskell, Introduction to Haskell 98, and Hackage are good resources.
The Stack documentation and How I Start: Haskell are good sources of using the tools.
I'm using the basic Haskell Platform installation, togeher with stack
to manage the packages and dependencies (install with
$ sudo aptitude install haskell-platform haskell-stack
).
Create the repository as normal: create the project in Gitolite, clone it, and insert the .gitignore
and README.md
files.
There's just one package, with the code in sub-directories of the src
directory. Each day will generate one (or more) entries in the adventofcode17.cabal
file.
Create the basic stack
project. This will create a new directory. Note that this new directory name can't have a hyphen-delimited word that's just digits, so the project will have to be advent-of-code
stack new advent-of-code --bare simple
Modify the stack.yaml
file as needed, such as adding the ghc-options
stanza.
Each day lives in a separate directory within the src
directory. It will also need it's own stanza in advent-of-code.cabal
.
Compile with
stack build
or
stack build advent01
Run with
stack exec advent01
Run interactively with
stack ghci advent-of-code:exe:advent01
To profile, use
stack build --executable-profiling --library-profiling --ghc-options="-fprof-auto -rtsopts" adventofcode1601
then run with
stack exec -- advent01 +RTS -p -hy
Stack is using the 12.20-lts resolver for packages, so make sure you read the correct documentation for the packages included in it.
When you use a new package, use
stack solver
to see how the stack.yaml
file needs to change, and
stack solver --update-yaml
to implement the changes.
Install following the IHaskell instructions.
Run it with
stack exec jupyter -- notebook
Build this readme file wth
pandoc -s README.md > README.html
(Using the Modest style.)