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.
Within the project directory, there will be one package for each day. This will save time waiting for stack
to check every executable before compiling what's changed. Each package needs a separate directory tree and a separate .cabal
file.
Then create the basic stack
project with it. 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 initial project will have to be adventofcode1701
stack new adventofcode1701 simple
This project will be demoted to being a package, but one that will hold the overall project.
Then create the top-level stack.yaml
file to hold the overall project information.
stack init
Modify this top-level stack.yaml
file as needed, such as adding the ghc-options
stanza. You can then delete adventofcode1701/stack.yaml
.
Each package needs a separate directory tree and a separate .cabal
file.
To work on a project, cd
into that project's directory.
Compile with
stack build
or
stack build adventofcode1701
Run with
stack exec advent01
Run interactively with
stack ghci adventofcode1701: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
Install following the IHaskell instructions.
To run, change into the package's directory (after modifying the .cabal
file) and run it with
stack exec jupyter -- notebook
Build this readme file wth
pandoc -s README.md > README.html
(Using the Modest style.)