Index: aoc2015.c ================================================================== --- aoc2015.c +++ aoc2015.c @@ -1,10 +1,55 @@ +#include #include #include #include "aocdailies.h" #include "aocutils.h" +struct House { + int row, col; +}; + +#ifndef MAX_HOUSES +# define MAX_HOUSES 2400 +#else +# error MAX_HOUSES already defined +#endif +void aoc201503(char *data, size_t len) { + (void)len; // unused argument + struct House house[MAX_HOUSES] = {0}; + unsigned nhouse = 1; // house at [0, 0] visited + int x = 0, y = 0; + while (*data) { + switch (*data) { + default: break; + case '^': y++; break; + case 'v': y--; break; + case '>': x++; break; + case '<': x--; break; + } + data++; + bool visited = false; + for (size_t k = 0; k < nhouse; k++) { + if ((house[k].row == x) && (house[k].col == y)) { + visited = true; + break; + } + } + if (!visited) { + if (nhouse == MAX_HOUSES) { + fprintf(stderr, "Need more houses in aoc201503()\n"); + exit(EXIT_FAILURE); + } + house[nhouse].row = x; + house[nhouse].col = y; + nhouse += 1; + } + } + printf("Santa delivered at least 1 present to %u houses.\n", nhouse); +} +#undef MAX_HOUSES + void aoc201502(char *data, size_t len) { (void)len; // unused argument unsigned sqf = 0, f = 0; for (;;) { char *err; Index: aocdailies.c ================================================================== --- aocdailies.c +++ aocdailies.c @@ -32,12 +32,12 @@ case 201508: p = aoc201508; break; case 201507: p = aoc201507; break; case 201506: p = aoc201506; break; case 201505: p = aoc201505; break; case 201504: p = aoc201504; break; - case 201503: p = aoc201503; break; #endif + case 201503: p = aoc201503; break; case 201502: p = aoc201502; break; case 201501: p = aoc201501; break; } return p; Index: aocdailies.h ================================================================== --- aocdailies.h +++ aocdailies.h @@ -32,11 +32,11 @@ aocfunc aoc201508; aocfunc aoc201507; aocfunc aoc201506; aocfunc aoc201505; aocfunc aoc201504; -aocfunc aoc201503; #endif +aocfunc aoc201503; aocfunc aoc201502; aocfunc aoc201501; #endif