diff options
| author | Bond_009 <bond.009@outlook.com> | 2022-12-01 22:30:22 +0100 |
|---|---|---|
| committer | Bond_009 <bond.009@outlook.com> | 2022-12-01 22:30:22 +0100 |
| commit | baf4910870a6e8999802b9a4a22eabd4142a34e3 (patch) | |
| tree | 2d11443dc21e53bd0d99d015cf789937d6d95862 /5 | |
| parent | 49d0c908f24b2c193c9deed1716fe36061ba26a1 (diff) | |
Move all Advent of Codes into one repo
Diffstat (limited to '5')
| -rw-r--r-- | 5/input | 781 | ||||
| -rw-r--r-- | 5/part1.c | 82 | ||||
| -rw-r--r-- | 5/part2.c | 95 | ||||
| -rw-r--r-- | 5/part2_fast.c | 90 | ||||
| -rw-r--r-- | 5/seat_id.asm | 25 | ||||
| -rw-r--r-- | 5/seat_id_ssse3.asm | 23 |
6 files changed, 0 insertions, 1096 deletions
diff --git a/5/input b/5/input deleted file mode 100644 index 5145d8e..0000000 --- a/5/input +++ /dev/null @@ -1,781 +0,0 @@ -FBFFBFFRLL -BFFFFBBRLR -FFFBBBBRLR -FBFFFBFLRL -FFBFBFFRRL -FFBBBBFRRR -FBFFBFBLRR -FFBBFBFRRL -FFFFBBFRRL -BFBBBBBLLL -FFBFBFBLLL -FFBFFFBLLL -FBBBFBFRLL -BBFFFBFRRR -FFFBFBBLLR -FBFBFBFRRR -BBFFBFBRLL -FBFBBBBLRL -FBFFFFFLLL -BFFFFFFRLL -BFFFBFBLRL -BFBBBFBRRL -BFFFBFFRRL -FBFFFFFRRR -FFBBBBBLLR -BFBBFFBLRL -FBBFBBBRLR -BFBFBFFRLL -BFBFBFBRLL -BFFBFBFLLL -FFBBFFBLRL -FBBFFBFLRR -FBBBFBBRRR -BFBFFBFRLR -BFBBBFBLLL -FFBFBBBLRR -BFBFFBFLLL -FBFBFBBLLL -BFBBBFBLRL -FBFBFBFLRL -FFBFFBFRRL -FBBFFBFLLL -BFBBBBBLRL -FBBBBBFRLR -BFFFBBFRLL -FBBBBFFLLR -FBBBBBFRLL -BFBBBFFRLR -BFBBBFBRLL -BFFFBFFLLL -FFFBFBFLRL -BFFBBFFLRL -BBFFFBFRLL -BFBBFFBRLR -BFBFBFBRRL -BBFFFBFRRL -FBBFBBBLRR -FFBFBBBLLL -BFFFBFBRLR -FFBBFBBLLL -FBFBBFBLLL -BFBBFBFLLR -FFBFBBBRRL -FFBFFFFLRL -FFFBBFFLRR -FBBBBBFRRR -FFFFBBBRLL -BFBFBBBRRR -BBFFBFBRRL -FBFBBFFRLR -FBBFFBFRRR -BBFFBFBRRR -FBFBBFBLRR -FBBFFBBLRR -FBBBBFFRLL -BFBFFFBRLR -FBFBBFBRRL -FFBFBBFRRR -FBFBFFFRLL -BFBBFFBLLR -FBFFFFBRLR -BFBBBFFRLL -FFBBFFBRLR -FFFBBFBRLL -FBBBBBBLRR -FBFFBBBLRR -BFFFFBFLRL -BBFFFFFLRR -BFFBFFBLLR -FFBBBFFRLL -BFBFBFBRLR -FBBFBFBLRR -FBFBBBFRLR -FBFFBBBRRR -FBBFFBFRLL -FBBBFFFRLR -BFBBBBFLLR -BFFFBFFLLR -FFBFFFBRRR -FBFFFBFLLR -FFFFBBBLLR -BFBFFFBRLL -BFFBBFBLRL -BFFBFBFLLR -FFBFFBFRLR -BFBFFFBRRL -FFBBFBFLLL -BFBBBBBRLR -BFBFBFBLRR -FBFFBFBLLR -FBFBFBBRRL -BFBFBBBLLL -FFBBFBBLRL -FBFFFBFRRL -BFBBFFFLRR -BFBFBBFRRR -FBFFFFBLRL -BBFFBBFRRR -FFBFFBBRLR -FBBFBFBLRL -BFBFFFBRRR -FFFBBBFLRL -BFFBFFBRLL -FBFBFFBLRR -FFBFBBFLLL -FFBBBFFLRL -FFBBFFFRLR -BBFFBFBLRL -FFFFBBFRLR -FFFBFFBLRR -BFFBBBFLLR -BFFFBBBRRL -FBBFBFBRLL -BFFBFFFRRR -BBFFFFFLRL -BBFFFBBRLL -BFFFBBBRRR -BFFFBBBLRL -BBFFBFFRRR -BFFBFFBLRL -FBBBBFBRLR -FFFBFBFRRL -BFFBBBBRRL -FBBBBBFLRR -FBFBBBBLLR -FBBBBFBLRR -FFFBFFBRLL -FFBBBBFLLR -FFBBBBBRRL -FBBFFFFLLL -FBFFBBBRLL -FBFBFFBLLR -FBBBBBFRRL -BFFFBFBLLL -FFFBFFFLRL -FFFFBBFRLL -BFBBFFFRLR -BFFFBBBRLR -FFBBBFBLLR -BFFFBFBRRR -BFFBFBBLRL -FFBFBFBLRR -FBBBBFBRRR -FFBFBFFLLR -BBFFFFFLLR -FBBBFBFRRR -BBFFFFBRRL -FBFBFBBLRL -BFBBBFFLLR -BBFFBBFLRL -BFBFFBBRLR -FBFBBBFRRL -FBBBFFBRLL -BBFFFFBLLR -FFBBFBBLRR -FBBBBBBRLR -FFFFBBBRRL -FBFBBBBRLR -BBFFBFFRRL -FBBBFFBLRL -FFBBBFBLRR -BFBFBBBRLL -FBFFFBBLRL -FBFBBBBRLL -BBFFFBBLLL -BFBBFFBLLL -BFFBBBBRRR -FBFBFFBLLL -FBFBFBFRRL -FBBFFFBLLL -BBFFFBFRLR -FBBBBFFLRR -FBFFFBBRLL -FFBBFBFRRR -FBFFFFFLRR -BFBFFBBLRR -FFBFBFFRRR -BFBFFBBRLL -FBBFFFFRRL -BFFBBFBRLL -BFFFFFBLLR -FBFBBFBLLR -BFFBBFBRLR -BFFBFBFRRR -FFBFBBFRLL -FFFBBBBLRR -BFFFBFBLLR -FBBBBFBLRL -FBFBBFFLRL -FFFBFFFRLL -BFFFFBBRRL -FBBFFFBRRR -FBBFBFFLLR -BFBBBBBRRR -BFFBFBFRLL -FFBFBBFRRL -BFBFBFBLLR -FFBFBBFLLR -FFBFFFFLRR -FBBBFBBRRL -BFFBFBFRLR -BFFBFFBRRL -BFBBBFBRLR -BBFFFFBLRL -FBBBFFBRRL -FBFFFBBRRL -FBBBBBBLLL -FFFBFFBLLL -BFBBFBFRLL -FBFBFFBRLR -FFFFBBBRRR -BBFFFBBRLR -BFBBBBFRLR -FBFFBBFLRR -BFFFBFFRLR -FFFBBBBLLR -FBFFFFBLRR -FBFBFBBRLL -FBFFBBBRLR -BFFFFFFLRR -FBFFFFFRLL -FFBFBFFRLL -FFFBBFFRLR -FBBFBFFRRL -FBBBBBBRRR -BFBFBBBLRL -BBFFFFBRRR -FFBFFBBLRL -FBBBBBBLLR -FFBBFFFLRL -FBBBFBBLRR -FFBBBBBRLR -BFBFFFFLLR -BFFBBBBRLL -BFBFBFFLRL -FBBFFFBLRL -BFBFBBBRRL -BFBFBFBLRL -BFBBFBFLRR -BFFFFBFRLR -BFFFBFBRLL -FBFBFBFLLL -FBFFBFFLRL -BFFFFFFRRL -FBBFBFFRLR -FFBBBFFLLR -FBBBBFFLRL -FBBBFBBRLR -BFBBBFFLRL -FBFFBBBLRL -BFFFFBFRRL -BFFFBFFLRR -FFBFBBFLRL -BFBFFFBLRL -BFFFFFBLLL -FBFFBFBLLL -FBFBBBBRRL -FBBFFBBRLR -BFFFBBFRRL -BFBBFBBRLR -FFFBFBBLRR -FFFBFBFRLR -FBFBFBFRLR -BFBFBBBRLR -BFFFFBBLLL -BFFBBFBRRR -BFFBBBFLLL -FFBBBFFRRL -BFBBBFBLLR -FBBFFBBLLR -FBBFBBFLRL -BFFFFFBRRR -FBBBFBBRLL -FBFBFFBRRR -BFFBBBFRRR -FBBBBBBLRL -FFBBBFFLRR -BFFBBBFRLL -BBFFBBFRLL -FBBFBBFRLR -BFBFBFFRRR -BFBFBBFLRL -BFFFFBFRLL -FFBBFBFLLR -BFFBFBBLRR -FBFFBBBRRL -FBBFBBFRLL -FBFFFBBLLR -FFFBBBBRRR -FFFFBBBLRL -FFBBFFFRRL -BFFBBFFRRL -BFFFBBFLRL -BFFFFBBLRR -BBFFBBBLRR -BFBFFFFLRR -FBFBBBBLLL -BBFFFBBLRR -FFFBFBFLRR -FBBFFFFLRL -FFBBBBFRLL -FBFFBFBLRL -BFBBFBBLLL -FBBFBBFLLL -FFBFFBBRLL -BFBFFFFRLR -FBFFBBFRRR -FFFBBFFRRR -FFFBFFBRLR -FBBBBBFLLL -FBBBFFFLRL -FFBBFFFLRR -FFFBBBBRRL -BFBFBBFRLL -BFBFFBBRRL -FBBFBBFRRL -BFBFBBFLLR -BBFFBBBRRR -BFFFBBFRLR -FFFBBBFRLR -BFFBFFFRLL -BFBFFFFRRL -FFBBFFFLLL -FBFBBBBLRR -FBFBFFFLRR -BBFFBFFLRR -FBBBFBBLRL -BFBFBFBLLL -FBFBFFFLLR -BFFBBFBLRR -FBBFFFBRRL -BFFBBFFRRR -FBBFBBBRRL -BFFFFBBLLR -FFBBBBFLLL -BFFBFFBRRR -BFFFFBFRRR -FFFBBBFRRR -FBFBFFFRLR -FBBBFBFLLR -FFBBFFBRLL -FBFBFFFLLL -BFFBFBFRRL -BFBFFBFRRL -BFBBBBFLLL -FBBBFBFRRL -FFBFBFFLLL -BFBBFFFRRL -FFBBFFBLLR -BFFBBBBRLR -FFBBBBBLRR -BFFBFFFRRL -BFFBFBBRLL -FBBBFBFRLR -FBBFFFFLRR -BFFFBBFLLR -FFFBBFBRRL -FFBBFFBLRR -FBBFFFBRLR -BFBBBBBRLL -BBFFFFFRRL -FFBFFBBRRL -BFBFFBFLLR -FBFBBBFLLL -FBFFFFFRRL -BFFFBFBLRR -FBFFFFBLLR -FBBFBFBRRR -FBBBFFFLLR -BBFFBFBLRR -BBFFFBFLLL -FBFFFBFRLR -BFFFBFFLRL -BBFFBFFLRL -BFFFFFFLLR -BBFFBBBLLL -FFBFBBBLLR -FBBFBBBLRL -BFBBFBBLRR -FFBFBFBLLR -FFBFBFBRRL -BFBBFBBRRL -BFFBFFFLLR -FFBBFFBRRL -BBFFBBBRRL -FFFBBFBRLR -BFBBFBFRRR -BFFFFFFRRR -FBBBFFBLLL -BFBFFFFLLL -BBFFBFBLLR -BFBFBBFRLR -FFBFBBBRRR -BFFFBBFLLL -FBFFBBFRLL -FFBBFBFRLL -BFBFBBBLLR -FBBFBFBLLL -BBFFFFBRLL -BBFFBFBLLL -BFFBFFBLRR -BFFBBFBLLL -FFBFFFBLRR -FBBFFBFRRL -FBBBBFBLLL -FFBFFBBLLR -BFFBBBFLRR -FBFBFFBRLL -FFBFFFBRLL -FFBFFBFLLL -FBFBBFBLRL -FBBFBFFRRR -BFBFBFFLLR -FBBFFFBLLR -BFBBBBFRRR -FBBFBBFRRR -BBFFBFFRLR -FBFBBBFRLL -FBBFBBBLLR -BFFFFFFLRL -BFBFFBBRRR -BFFFBFFRLL -BFBBFBFLRL -FFBFFFFRRR -BFFBBFFRLR -FBBBBBFLLR -FBFBFFBLRL -FFFBBFBLLR -FBBFBFBLLR -FFFBFFBRRR -FBFFFFFRLR -FBFBBFBRLR -FBBBFBFLRR -FBFBBBFLRL -BFFBFFFLRL -FFBBBFFRRR -FFBBBBBLLL -FBFFBBFLLR -FFBFBFFLRR -FFFBBBFLRR -BFBFBBFLLL -BBFFBFFLLR -FFBBFBBRLL -FBBFFBBLLL -FBFFBFBRLL -BFBFBFFLRR -FBBBFFBRLR -FFBFFBFRLL -FFFFBBBLLL -FFBFFBBRRR -FBBBBFBRLL -BFFFFBBRRR -FFBBFFFRLL -FFBFBFBRLL -BBFFFFBLLL -FFBBBFBRRL -BFFFFBBLRL -FBBBFBBLLR -FBBBFBBLLL -FFBFBFBLRL -FBBBBFFRRR -FBBFFFFRLR -FFBFFFBRLR -BFBFBFBRRR -FFFBFBBRLL -FBBBFFBRRR -FBBFBFFRLL -BFFBFBFLRR -BFBBBFFRRL -BFFBBFBLLR -FFBBBFBRLL -FBFBFBBLRR -BFBBFFFLRL -BFBFBBFLRR -BFBBBFFRRR -FBBBFFFRRL -FBFBFBFLLR -FBBFFFFLLR -FFBFBBFRLR -FFFBFBBLRL -BBFFFBBLLR -BFFBBBFRLR -FFFFBBBRLR -BBFFBBFRLR -FBFFFFBRLL -FBFBFFFRRR -FBFFFBBLLL -BFBBBBFRLL -FBFBFFBRRL -FFFBFFFRLR -BFBBFBFRRL -FBFFBFFLRR -FBFFFBBLRR -FFBFBBBRLR -FBBFBFFLRR -FBFFFBBRRR -FFBFBBBRLL -FFBBBBBRRR -BFFBBFFLLL -BFBBBBBRRL -BBFFBBBRLL -FBFFFFFLRL -BFFBBFFLRR -FBFFBBFLRL -BFBFFBFRRR -FBFBBFBRLL -BFFFBFBRRL -FBBFFBFLLR -BFFFFFFLLL -FBFBFBFRLL -FBBBBFFRRL -BFBFFBBLLR -FBBFBFBRRL -FFFBFFFLLR -FFBBBBBLRL -FFBFFBBLRR -FFFBFBFRRR -BFBBFBBRLL -BFBBBFBLRR -FFBBBBFLRR -FBBBFFBLLR -BBFFBBBLLR -FBFBBFFRRL -FBBBBBFLRL -FFFBBFFRRL -BFFBBBBLRR -FFFFBBBLRR -FFFFBBFLRR -FBFFFBFLLL -FBFBFBBLLR -BFFBBBBLLL -FFBFFFFRLR -BFBBFFBLRR -FFBBFBFLRL -BFBFBFFLLL -BFFBFBBLLR -BFBBFBBLRL -FFBBBBFLRL -FBBBFFFLLL -FFFBFFBRRL -BFFFFBBRLL -BFFFBBBRLL -BFFBFFFLRR -FFBFBFBRRR -BBFFBBFLLR -FFBBFBBLLR -FFBFFBFRRR -FFBBBFFRLR -BFFBBBBLLR -FFFBFFFLRR -FBFFFFFLLR -FBFFBBBLLL -BBFFBBFLLL -FFBBFBFLRR -BFFBFBFLRL -FBFBBBFRRR -BFBBFBBLLR -FBFFFFBRRL -FFFBBFBLRR -BBFFFFBLRR -BFBBBBFRRL -FFBBBFBLLL -BFBBFBFRLR -BFBBFFBRRL -BFBFBFFRRL -FBBFFBBLRL -FFFBFFBLRL -BFFBBFFRLL -FBBBFFFRLL -FBBFBBFLLR -FFBFFFFLLR -FBBBFBFLRL -BFFFBBBLLR -FBFBBBBRRR -FBBFBFBRLR -FFFBFBFLLR -FFFFBBFRRR -FFFBBFFLRL -BFBFFBFRLL -FFFBFFBLLR -FBBFFFBRLL -FFBBBFBRRR -FFBBFBBRLR -BBFFFFFRRR -FFBFFFFRLL -FBBFFBBRRL -BBFFFBFLRR -FBBFFFFRRR -FFBFFFBRRL -BFBBFBFLLL -BFFFFBFLRR -BBFFFFFLLL -FFBBFBBRRL -FFBFBFFLRL -FBFFBBFRRL -BBFFBFBRLR -BBFFBBFLRR -FBFFBFBRRR -FBBFBBFLRR -FBFFFBFRLL -BFBFFFFLRL -FFFBBFBRRR -BFBBBBBLLR -FBBFFBBRRR -FFBBBFFLLL -FBBBBFBLLR -BBFFFFFRLL -FFBBBBFRLR -FBFBFBBRRR -FBFFBFFLLL -FBFFBBBLLR -FBBBBFBRRL -BFBFBFFRLR -FBBFBBBRLL -BFBBFFFRLL -FBBBFBFLLL -FFBFFFFRRL -FBFBBFFRRR -FBFFFFBLLL -FBBBBBBRLL -BFFBFBBRRR -BBFFBBFRRL -FBBFBFFLRL -FBFFFFBRRR -FBBFFFFRLL -FFFBFFFRRR -FBFFBBFLLL -BFFFFBFLLL -BFFFFBFLLR -FFBFFBFLLR -FFBFFBFLRR -BFFBBBBLRL -FFBBFFBLLL -FBBFBBBLLL -FBFBBBFLLR -BFFBBBFLRL -BFBBFFBRLL -FBFFBFFRRR -FFBFFFBLRL -FFFBBBFRRL -FFBFBBFLRR -FFFBBBBLRL -FFFBBFFLLL -FFFBFBBRRR -FBBFBFFLLL -BFFFBBBLLL -BFFBFFFRLR -FFFBBBBLLL -BFFFFFBRRL -FFBBFFFLLR -BFBBFFFRRR -BFBFFBFLRR -FFFBBBFLLR -FBFBBBFLRR -BBFFBBBRLR -FBFBBFFLRR -FFBBBFBLRL -FFFBBBFRLL -BFFBFFBRLR -BBFFFBBRRR -BFBBBBFLRL -BFBBBFBRRR -FBBBBFFLLL -FFFBFBBLLL -BBFFFFFRLR -BBFFBFFLLL -FFBFBBBLRL -FFBBFBFRLR -BFBBBBBLRR -FFBFFFBLLR -FFBFFBFLRL -BFFBFBBRLR -FBFBFFFRRL -FBBBFFFLRR -FFFBBFFLLR -FBBBBFFRLR -FFBBFBBRRR -BFBBFBBRRR -BFBFBBFRRL -BFFBBBFRRL -FFFBFFFLLL -FBBFFBFLRL -FFFBFBBRLR -BFBBFFFLLR -BFBBFFBRRR -FBFFBFBRRL -FFBBBBBRLL -BFFBFFBLLL -BFFFBBFRRR -FBFFFBFRRR -FFBFBFBRLR -FBFBBFFLLR -FBBFBBBRRR -BFBFFFFRRR -FFBFFFFLLL -FBFBBFFRLL -BFBFFBFLRL -BFBBFFFLLL -FBFBBFBRRR -BFBFFFBLLR -BFBFFFBLLL -BBFFFBFLLR -BBFFBFFRLL -FFBBBBFRRL -BBFFFBFLRL -BBFFBBBLRL -BFBFFFBLRR -FFFBFBFRLL -BFBFFBBLLL -BBFFFBBRRL -BFBBBFFLLL -BFFBBFFLLR -FFBFFBBLLL -BFFBBFBRRL -BFFFFFBLRL -BBFFFFBRLR -FBFBBFFLLL -FFBBBFBRLR -FFFBBFBLLL -FBFFFBBRLR -FFBFBFFRLR -BFFFFFBLRR -FFFBBBBRLL -FFBBFFFRRR -BFFFFFBRLR -FBBBFFBLRR -FBFBFBBRLR -FBBFFFBLRR -BFBFFBBLRL -FBFFBFBRLR -FBFBFFFLRL -BFFFFFBRLL -BFBBBBFLRR -BFFBFFFLLL -FBFFBFFRRL -FFFBBFFRLL -BFFFBFFRRR -FBFFBFFLLR -FFFBBBFLLL -FBFFFBFLRR -BFFBFBBLLL -BFFFBBBLRR -FBBBBBBRRL -FBFFBFFRLR -FBBFFBBRLL -FBBBFFFRRR -BFFBFBBRRL -FFBBFFBRRR -BFBBBFFLRR -FFFBFBBRRL -BFBFBBBLRR -FFFBBFBLRL -FBFFBBFRLR -BFFFBBFLRR -BBFFFBBLRL -FBBFFBFRLR -FFFBFBFLLL -FFFBFFFRRL -BBFBFFFLLL -FBFBFBFLRR -BFBFFFFRLL diff --git a/5/part1.c b/5/part1.c deleted file mode 100644 index ca726b7..0000000 --- a/5/part1.c +++ /dev/null @@ -1,82 +0,0 @@ -#include <stdio.h> - -#define COLUMNS 8 -#define ROWS 128 - -int seat_id(const char *seat) -{ - int row = 0; - int row_lower = 0; - int row_upper = ROWS - 1; - int column = 0; - int column_lower = 0; - int column_upper = COLUMNS - 1; - int i = 0; - for (; i < 6; i++) { - switch (seat[i]) { - case 'F': - row_upper -= (row_upper - row_lower + 1) / 2; - break; - case 'B': - row_lower += (row_upper - row_lower + 1) / 2; - break; - } - } - - switch (seat[i++]) { - case 'F': - row = row_lower; - break; - case 'B': - row = row_upper; - break; - } - - for (; i < 9; i++) { - switch (seat[i]) { - case 'L': - column_upper -= (column_upper - column_lower + 1) / 2; - break; - case 'R': - column_lower += (column_upper - column_lower + 1) / 2; - break; - } - } - - switch (seat[i++]) { - case 'L': - column = column_lower; - break; - case 'R': - column = column_upper; - break; - } - - return row * COLUMNS + column; -} - -int highest_seat_id(const char *filename) -{ - FILE *file = fopen(filename, "r"); - - // Include space for newline and string terminator - char buffer[16] = { 0 }; - - int max = 0; - - while (fgets(buffer, 16, file)) { - int tmp = seat_id(buffer); - if (tmp > max) { - max = tmp; - } - } - - fclose(file); - - return max; -} - -int main(int argc, char *argv[]) -{ - printf("%i\n", highest_seat_id(argv[argc - 1])); -} diff --git a/5/part2.c b/5/part2.c deleted file mode 100644 index 396ea76..0000000 --- a/5/part2.c +++ /dev/null @@ -1,95 +0,0 @@ -#include <stdio.h> - -#define COLUMNS 8 -#define ROWS 128 - -int seat_id(const char *seat) -{ - int row = 0; - int row_lower = 0; - int row_upper = ROWS - 1; - int column = 0; - int column_lower = 0; - int column_upper = COLUMNS - 1; - int i = 0; - for (; i < 6; i++) { - switch (seat[i]) { - case 'F': - row_upper -= (row_upper - row_lower + 1) / 2; - break; - case 'B': - row_lower += (row_upper - row_lower + 1) / 2; - break; - } - } - - switch (seat[i++]) { - case 'F': - row = row_lower; - break; - case 'B': - row = row_upper; - break; - } - - for (; i < 9; i++) { - switch (seat[i]) { - case 'L': - column_upper -= (column_upper - column_lower + 1) / 2; - break; - case 'R': - column_lower += (column_upper - column_lower + 1) / 2; - break; - } - } - - switch (seat[i++]) { - case 'L': - column = column_lower; - break; - case 'R': - column = column_upper; - break; - } - - return row * COLUMNS + column; -} - -int missing_seat_id(const char *filename) -{ - FILE *file = fopen(filename, "r"); - - char table[COLUMNS * ROWS] = { 0 }; - - // Include space for newline and string terminator - char buffer[16] = { 0 }; - - int min = __INT_MAX__; - int max = 0; - while (fgets(buffer, 16, file)) { - int tmp = seat_id(buffer); - if (tmp < min) { - min = tmp; - } - else if (tmp > max) { - max = tmp; - } - - table[tmp] = 1; - } - - fclose(file); - - for (int i = min + 1; i < max; i++) { - if (table[i] == 0) { - return i; - } - } - - return 0; -} - -int main(int argc, char *argv[]) -{ - printf("%i", missing_seat_id(argv[argc - 1])); -} diff --git a/5/part2_fast.c b/5/part2_fast.c deleted file mode 100644 index 483dd8f..0000000 --- a/5/part2_fast.c +++ /dev/null @@ -1,90 +0,0 @@ -#include <stdio.h> - -#define COLUMNS 8 -#define ROWS 128 - -int row(const char *seat) -{ - int end_res = 0; - for (int i = 0; i < 7; i++) { - if (seat[i] == 'B') { - end_res |= 0x40 >> i; - } - } - - return end_res; -} - -int column(const char *seat) -{ - int end_res = 0; - for (int i = 7; i < 10; i++) { - if (seat[i] == 'R') { - end_res |= 0x200 >> i; - } - } - - return end_res; -} - -#ifdef USE_ASM -int seat_id(const char *seat); -#else -int seat_id(const char *seat) -{ - int end_res = 0; - int i = 0; - for (; i < 7; i++) { - if (seat[i] == 'B') { - end_res |= 0x200 >> i; - } - } - - for (; i < 10; i++) { - if (seat[i] == 'R') { - end_res |= 0x200 >> i; - } - } - - return end_res; -} -#endif - -int missing_seat_id(const char *filename) -{ - FILE *file = fopen(filename, "r"); - - char table[COLUMNS * ROWS] = { 0 }; - - // Include space for newline and string terminator - char buffer[16] = { 0 }; - - int min = __INT_MAX__; - int max = 0; - while (fgets(buffer, 16, file)) { - int tmp = seat_id(buffer); - if (tmp < min) { - min = tmp; - } - else if (tmp > max) { - max = tmp; - } - - table[tmp] = 1; - } - - for (int i = min + 1; i < max; i++) { - if (table[i] == 0) { - return i; - } - } - - fclose(file); - - return 0; -} - -int main(int argc, char *argv[]) -{ - printf("%i", missing_seat_id(argv[argc - 1])); -} diff --git a/5/seat_id.asm b/5/seat_id.asm deleted file mode 100644 index a372a9a..0000000 --- a/5/seat_id.asm +++ /dev/null @@ -1,25 +0,0 @@ -global seat_id - -section .text - -seat_id: - xor eax, eax ; set up return value - cmp BYTE [rdi], 'B' - sete al - xor ecx, ecx -%assign i 1 -%rep 6 - shl eax, 1 - cmp BYTE [rdi + i], 'B' - sete cl - or eax, ecx -%assign i i+1 -%endrep -%rep 3 - shl eax, 1 - cmp BYTE [rdi + i], 'R' - sete cl - or eax, ecx -%assign i i+1 -%endrep - ret diff --git a/5/seat_id_ssse3.asm b/5/seat_id_ssse3.asm deleted file mode 100644 index 4d51cbe..0000000 --- a/5/seat_id_ssse3.asm +++ /dev/null @@ -1,23 +0,0 @@ -global seat_id - -section .rodata - align 16 - xmm_shuf: db 8, 7, 6, 5, 4, 3, 2, 1, 0, 9, 10, 11, 12, 13, 14, 15 - xmm_cmp: db 1, 'RBBBBBBB', 1, 1, 1, 1, 1, 1, 1 - -section .text - -seat_id: - movq xmm0, qword [rdi] ; load first 8 bytes - pshufb xmm0, [rel xmm_shuf] ; reverse byte order and already shift left once - pcmpeqb xmm0, [rel xmm_cmp] - pmovmskb eax, xmm0 ; store mask in return value - xor ecx, ecx - cmp byte [rdi + 8], 'R' - sete cl - or eax, ecx - shl eax, 1 - cmp byte [rdi + 9], 'R' - sete cl - or eax, ecx - ret |
