pwaring / advent-of-code

Advent of Code solutions

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Advent of Code

Advent of Code solutions, in C (2017, 2018), Python (2018), PHP (2015, 2019, 2020) and Go (2021, 2022, 2023). I am solving these problems for fun and, with the exception of PHP, to (re)learn languages that I don't use commercially, but would like to.

These are not necessarily the most efficient, elegant or robust solutions. For example, I have not always freed memory allocated on the heap, partly because these solutions run for a very short period of time - seconds in most cases - and the kernel will reclaim any memory allocated to a process when the process terminates anyway.

As the input is 'known' there is minimal error checking, real programs would have significantly more validation and unit tests.

For C solutions, C99 is assumed as a minimum and solutions from 2018 day 4 onwards have been compiled with:

clang -Werror -Weverything -Wno-padded -Wno-gnu-folding-constant -g -o ${EX_NUM} ${EX_NUM}.c $(shell pkg-config --cflags --libs glib-2.0)

-Wno-padded is used because padding a struct is a matter for the compiler. If you rely on a particular type of padding, be it on your own head.

-Wno-gnu-folding-constant is used because folding constants is a compiler optimisation and generally not something that should raise a warning, at least in the limited scope of these solutions.

-Weverything blows up on GLib so the include statement is directed through glib_indirect.h which turns off -Weverything for the third party library.

About

Advent of Code solutions

License:MIT License


Languages

Language:Go 57.3%Language:C 21.2%Language:PHP 21.0%Language:Python 0.4%Language:Makefile 0.2%