Advent of Code

Check-in [84c4349d5e]
Login

Check-in [84c4349d5e]

Overview
Comment:201503 1st star
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 84c4349d5ee108078fd4d9624dfaa8e975d24c296938f0bbd9ec7bf2959bf2eb
User & Date: nnz on 2024-12-04 18:21:47
Original Comment: 201503 -- 1 star
Other Links: manifest | tags
Context
2024-12-04
18:37
201503 2nd star check-in: f5ff8c9552 user: nnz tags: trunk
18:21
201503 1st star check-in: 84c4349d5e user: nnz tags: trunk
16:13
simplified command line validation check-in: f66f7bf395 user: nnz tags: trunk
Changes

Modified aoc2015.c from [6413bdc5b2] to [fbd36b6015].


1
2
3
4
5












































6
7
8
9
10
11
12
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
+





+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#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;
        unsigned l = strtoul(data, &err, 10);
        if (*err == 0) break;

Modified aocdailies.c from [439033dc50] to [0c5580f51d].

30
31
32
33
34
35
36
37
38

39
40
41
42
43
44
30
31
32
33
34
35
36

37
38
39
40
41
42
43
44







-

+






        case 201510: p = aoc201510; break;
        case 201509: p = aoc201509; break;
        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;
}

Modified aocdailies.h from [86e7c68c5a] to [78d65ea150].

30
31
32
33
34
35
36
37
38

39
40
41
42
30
31
32
33
34
35
36

37
38
39
40
41
42







-

+




aocfunc aoc201510;
aocfunc aoc201509;
aocfunc aoc201508;
aocfunc aoc201507;
aocfunc aoc201506;
aocfunc aoc201505;
aocfunc aoc201504;
aocfunc aoc201503;
#endif
aocfunc aoc201503;
aocfunc aoc201502;
aocfunc aoc201501;

#endif