Advent of Code 2017 is a programming contest, in which a new puzzle comes online every day from 1 until 25 December. These are my solutions to the puzzles. Like last year, I solved each day's puzzle in a different programming language. As an additional additional challenge, I didn't use any language I used last year!
A retrospective is now available. Moreover, each solution
subdirectory contains a README.md
with my thoughts on that day's language.
I used only "mainstream" programming languages, not esoteric or toy languages, because this was hard enough as is. However, I did include some older languages in the list out of historic interest. Plus, a free (as in beer) implementation for Linux had to exist.
Languages I could still have used, in alphabetical order:
- Ada
- ALGOL 60
- APL
- BLISS
- Boo
- CMake
- COMAL
- Common Lisp
- Céu
- Ceylon
- Crystal
- Dyon
- Elm (browser only)
- GDscript
- GLSL
- Gluon
- Idris
- Infinifactory
- Inform7
- Io
- Labview
- Little
- Logtalk
- M4
- Make
- Modula-3
- Moonscript
- MUMPS
- Nemerle
- Pharo
- PL/I
- Postscript
- Prolog
- Raku
- REBOL
- Self
- SNOBOL
- Wren
Used, in alphabetical order (this year's entries in bold):
- ALGOL 68 (2017, day 5)
- Assembly, any architecture (x86, 2016, day 7)
- awk (2017, day 4)
- BASIC (BBC BASIC, 2017, day 17)
- C (2016, day 23)
- C++ (2016, day 24)
- C# (2016, day 17)
- Clojure (2017, day 19)
- COBOL (2016, day 1)
- CUDA (2017, day 14)
- CoffeeScript (2017, day 7)
- D (2016, day 11)
- Dart (2017, day 12)
- Eiffel (2017, day 18)
- Elixir (2017, day 22)
- Erlang (2017, day 10)
- F# (2017, day 16)
- Forth (2016, day 2)
- Fortran 90 (2016, day 8)
- Go (2016, day 25)
- Groovy (2016, day 13)
- Haskell (2016, day 16)
- Haxe (2016, day 22)
- Icon (2017, day 21)
- JavaScript (2016, day 20)
- J (2017, day 11)
- Java (2017, day 24)
- Julia (2017, day 9)
- Kotlin (2017, day 25)
- Lua (2016, day 18)
- Nim (2017, day 20)
- OCaml (2016, day 12)
- Octave (2017, day 13)
- OpenCL (2016, day 14)
- Pascal (2016, day 10)
- Pen and paper (and a calculator) (2016, day 15)
- Perl (2016, day 21)
- PHP (2017, day 23)
- Pony (2017, day 15)
- PostgreSQL (2017, day 1)
- Python (2016, day 5)
- R (2016, day 6)
- Ruby (2016, day 19)
- Rust (2016, day 9)
- Scala (2016, day 3)
- Scheme (2016, day 2)
- Sh (bash and common shell utilities) (2016, day 4)
- Smalltalk (2017, day 6)
- TCL (2017, day 3)
- TeX (2017, day 8)
- Input should be read from stdin if at all possible. Otherwise, read from a
file named
input
. - The input file must be read and parsed exactly as provided. No modifications are allowed.