Overview
Comment: | 201503 2nd star |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
f5ff8c9552241cda37fe309a2121ea6a |
User & Date: | nnz on 2024-12-04 18:37:30 |
Original Comment: | 201503 -- 2 stars |
Other Links: | manifest | tags |
Context
2024-12-04
| ||
18:48 | uses dynamic memory check-in: c73a56324d user: nnz tags: trunk | |
18:37 | 201503 2nd star check-in: f5ff8c9552 user: nnz tags: trunk | |
18:21 | 201503 1st star check-in: 84c4349d5e user: nnz tags: trunk | |
Changes
Modified aoc2015.c from [fbd36b6015] to [e6433b2bdc].
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #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; | > > | 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 | #include <stdbool.h> #include <stdio.h> #include <stdlib.h> #include <string.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 char *data2 = data; // save it 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; |
︙ | ︙ | |||
41 42 43 44 45 46 47 48 49 50 51 52 53 54 | } 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 (;;) { | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | } house[nhouse].row = x; house[nhouse].col = y; nhouse += 1; } } printf("Santa delivered at least 1 present to %u houses.\n", nhouse); memset(house, 0, sizeof house); nhouse = 1; struct House p[2] = {0}; int who = 1; // 0: santa; 1: santa bot // go around from the beginning while (*data2) { who = 1 - who; // santa; bot; santa; bot; ..., ..., ... switch (*data2) { default: break; case '^': p[who].row++; break; case 'v': p[who].row--; break; case '>': p[who].col++; break; case '<': p[who].col--; break; } data2++; bool visited = false; for (size_t k = 0; k < nhouse; k++) { if ((house[k].row == p[who].row) && (house[k].col == p[who].col)) { visited = true; break; } } if (!visited) { if (nhouse == MAX_HOUSES) { fprintf(stderr, "Need more houses in aoc201503()\n"); exit(EXIT_FAILURE); } house[nhouse].row = p[who].row; house[nhouse].col = p[who].col; nhouse += 1; } } printf("Santa and santa bot 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 (;;) { |
︙ | ︙ |