X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=README.md;h=cb6a338accb7d815a0b17804a3dbe5b27b43e5a1;hb=HEAD;hp=fe9e6b51a1e16eb60dd19303dbce20725216fe2c;hpb=98fb1acf36bb318266a95284760866faff505765;p=advent-of-code-16.git diff --git a/README.md b/README.md index fe9e6b5..cb6a338 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,72 @@ --- title: "Advent of Code 2016" -output: - html_document: - css: modest.css +output: html_document +css: modest.css --- - - -# Advent of Code 2016 - Code to solve the [Advent of Code](http://adventofcode.com/2016/) puzzles. This year, I'm trying to use the puzzles as a prompt to learn [Haskell](https://wiki.haskell.org/Haskell). [Learn you a Haskell](http://learnyouahaskell.com/chapters), [Introduction to Haskell 98](https://www.haskell.org/tutorial/index.html), and [Hackage](https://hackage.haskell.org/) are good resources. -I'm using the basic Haskell Platform installation (install with +# Toolchain + +I'm using the basic Haskell Platform installation, togeher with `Stack` to manage the packages and dependencies (install with ``` -$ sudo aptitude install haskell-platform +$ sudo aptitude install haskell-platform haskell-stack ``` ). +I have one package for each day, to 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. + +To work on a project, `cd` into that project's directory. + +Compile with +``` +stack build +``` +or +``` +stack build adventofcode1601 +``` + +Run with +``` +stack exec advent01 +``` + +Run interactively with +``` +stack ghci adventofcode1601: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 +``` + +# Readme + +Build this readme file wth +``` +pandoc -s README.md > README.html +``` + +### Earlier instructions, for compiling before use of Stack + +I'm also using some extra libraries. Before installing, run `cabal update` then set `library-profiling: True` in `~/.cabal/config` . Then install the packages with +``` +$ cabal install MissingH +$ cabal install parsec-numbers +$ cabal install cryptonite +$ cabal install pqueue +``` + Compile the code with ``` -ghc -o advent01 advent01.hs +ghc --make advent01.hs ``` then run it as @@ -28,4 +74,12 @@ then run it as advent01 ``` -(Using the [Modest styles](https://github.com/markdowncss/modest).) \ No newline at end of file +If you're profiling, compile and run with +``` +ghc -O2 --make advent01.hs -prof -auto-all -caf-all -fforce-recomp -rstopts +time ./advent01 +RTS -p -hy +``` + +and create the profile picture with `h2ps advent01.hp` . + +(Using the [Modest style](https://github.com/markdowncss/modest).)