summaryrefslogtreecommitdiff
path: root/11
diff options
context:
space:
mode:
authorBond_009 <bond.009@outlook.com>2022-12-01 22:30:22 +0100
committerBond_009 <bond.009@outlook.com>2022-12-01 22:30:22 +0100
commitbaf4910870a6e8999802b9a4a22eabd4142a34e3 (patch)
tree2d11443dc21e53bd0d99d015cf789937d6d95862 /11
parent49d0c908f24b2c193c9deed1716fe36061ba26a1 (diff)
Move all Advent of Codes into one repo
Diffstat (limited to '11')
-rw-r--r--11/input90
-rw-r--r--11/part1.c123
-rw-r--r--11/part2.c202
-rw-r--r--11/testinput10
4 files changed, 0 insertions, 425 deletions
diff --git a/11/input b/11/input
deleted file mode 100644
index c367ad5..0000000
--- a/11/input
+++ /dev/null
@@ -1,90 +0,0 @@
-LLLLLLLL.LLLL.LLLLLLLLL.LLLLLL..L.LLLLL.LLLLL.LLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLLL.L.LLLLLLLLLL
-LLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLL.LL.LLLLLLLL.LLLLLL.LLLLL.LLLLLLLL.LLLLLLLL.LLLL.LLLLLLLLLLLLL
-LLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLLLLLLLLLL.LLLL.LLLLLL.LLLLLL.LLLLLLL.LLLLLLLL.LLLLLLL.LLLLLLLLLL
-LLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLL.LLLLL.LLLLL.LLLLLL.LLLLL.LLLLLLLL.LLLLLLLL.LLLLLLL.LLLLLLLLLL
-LLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLL.LLLLL.LLLLL.LLLLLL.LLLLLLLLLLLLLL.LLLLLLLL.LLLLLLL.LLLLLLLLLL
-LLLLLLLL..LLLL.LLLLLLLLLLLLLLLL.L.LLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLL
-...L..LLL.L...........L....LL........LLL....L..L.......LLLLL.LL.....LL.LL...L..LLL.L......L....
-LLLLLLLL.LLLL..LLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLL
-LLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLL.LLLLL.LLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLL
-LLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLL.LLLLL.LLLLLLLLLLLL.LLLLL.L.LLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLL
-LLLLLLLL.LLL..LLLLLLLLLLL.LLLLLLL.LLL.L.LLLLL.LLLLLL.LLLLL.LLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLL
-LLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLLL..LLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLL
-LLLLLLLL.LLLLLLLLLLLLLL..LLLLLLLL.LLLLL.LLLLL.LLLLLL.LLLLL.LLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLL
-..LL.......L.L..L.LL......L.L....L...L...L.L........L.....L......LL...LL.LL.L........LLL.LL....
-LLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLL.LLLLL.LLLLL.LLLLLL.LLLLL.LLLLLLLLLLLLLLL.L.L.LLLLL.LLLLLLLLLL
-LLLLLLLL.LLLL..LLLLLLLL.LLLLLLLLLLLLLLL.LLLLL.LLLLLL.LLLLLLLLLLLLLL.LLL.LLLL.LLLLLLL.LLLLLLLLLL
-LLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLL.LLLL.LLLLL.LLLLLLL..LLLLLLLLLLLLLLLL.LLLLLLLLLL
-LLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLL.LLLLL.L.LLLLLLLLLL.LLLLL.LLLLLLLL.LLLLLLLL.LLLLLLL.LLLLLLLLLL
-.L..LLL...L.LLL..L..L....L....LL..LL...LL..LLLL.L.....L.L...........LL........L....L.L...L..LL.
-LLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLLLL.LLLLL.LLLLLL.LLLLL.LLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLL
-LLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLL.LLLLLLLLL.L.LLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL
-LLLLLLLLLLLLL.LLLLLLLLLLL.LLLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLL.LLLLLLLLLL
-LLLLL.LL.LLLLLLLLLLLLLLLLLLLLLLLL.LLLL..LLLLL.LLLLLL.LLLLL.LLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLL
-LLLLLLLL.L.LLLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLL.LLLLL.LLLLLLLL.LLLLLLLL.LLLLL.L.LLLLLLLLLL
-LLLLLLLL.L.LL.L.LLLLLLL.LLLLLLLLL.LLLLL.LLLLL.LLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLL
-L.LLLLLLLLLLL.LLLLLLLLL.LLLLLLLLL.LLLLLLLLLLL.L.LLLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL
-LLLLLLLLLLLLL.LLLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLL.LLLLL.LL.LLLLLLLLLLLLLLLLLL
-.LL.L....L.L..LL..L..L..LL.L...L.....L...LL......LLL...L...LL....L.L.......L.....L...L.L......L
-LLLLLLLLLLLLLLLLLLLLLLL.LL.LLLLLL.LLLLL.L.LL..LL.LLL.LLLLL.L.LLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLL
-LLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLL.LLL.LLLLLL.LLLLL.LLLLLLLLLLLLL.LLLLLLL.LLL.LLLLLLLLLL
-LLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLL.LLL.LLL.LLLLLLL.LL
-LLLLLL.LLLLLL.LLLLLLLL..L.LLLLLLL.LLLLL.LLLLL.LLLLLL.LLLLL.L.LLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLL
-LLLLLLLLLLLL..LLLLL.LLL.LLLLLLLLLLL.LLL.LLLLL.LLLLLL.LLLLL.LLLLLLLL.LLLLLLLL.LLLLLLL.LLLLLL.LLL
-LLLLLLLL.L.L..LLLLLLLLL.LLLLLLLLL.LLLLL.LLLLL.LLL.L...LLLL.LLLLL.LL.LLLLLLLL.LLLLLLL.LLLLLLLLLL
-LLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLL.LLL.LLLLL.LLLLLLLLLLLL.LLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLL
-LLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLLLL.LL.LLLLLLLL.LLLLLLL.LLL.LLLLLL
-LLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LL.LLLLLL.LLLLLLLLLL
-L.L..L...LL.L..L..L..L.L.L..L......................L...L..LLLL..LLLL..LL....L...LL..L.....L....
-LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLL.LLLLL.LLLLLL.LLLLL.LLLL.LLLLLLLLLLLL.LLLLLLL.LLLLLLLLLL
-LLLLLLLL.LLLL.LLL.LLLLLLLLLLLLLLLL.LLLL.LLLLL.LL.LLLLL..LL.LLLLLLLL.LLLLLLLL.LLLLLLL.LLLLLLLLLL
-LLLLLLLLLLLLL..LLLL.LL..L.LLLLLLLLLLLLL.LLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLL.LLLLL
-LLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLL.LL.LL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL.LL.LLLLLLLLLLLLLLL
-LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLL
-LL.LL...L...LL.LLL...L...LL.LL..L.L.L...L.L.......L..L..L.LLL..LL...LLLLL..L..LL..L.....L...LL.
-LLLLLLLL.LLLLLLLLLLLLLL..LL.L.LLL.LLLLL.LLLLLLLLLLLL.LLLL..LLLLLLLL.LLLLLLLL.LLLLLLL.LLLLLLLLLL
-LLLLLLLL.LL.LLLL.LLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LL.L.LLL.LLLLLLLLLLLLLLLLL.LLLLLL..LLLLLLLLLL
-LLLLLLLL.LLLL.LLLL.LLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLL.LLLLL.LLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLL
-LLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLL.LLLLLLLL.LLLLL.LL.LLLLLLL.LLLLLLLLLL
-LLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLL.LLLLLLLLLLL.LLLLLL.LLLLL.LLLL.LLL.LLLLLLLL.LLLLLLL.LLLLLLLLLL
-LLLLLLLL.LLLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLLL.LLLLLLLL.LLLLLLLLLL.LLLLLLL
-LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLL.LLLLLLLLLLLL.LLLLLLLL.LLLLLLLL.LLLL.LL.LLLLLLLLLL
-LLLLLLLLLLLLL.LLLLLLLLL..LLLLLLLLLLLLLLLLLLLL.LLLLL.LLL.LL.LLLLLLLL.LLL.LLLLLLLLLLLLLLLLLLLLLLL
-L.L................L..L.L.LL..L..L..L.L..L.LLLL..........L..LL.LL.L...LL...L....L...LL..L.L.L.L
-.LLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLL.LLLLL.LLLLL.LLLLLL.LLLLL.LLLLLLLL.LLLLLLLL.LLLLLLL.LLLLLL.LLL
-.LLLLLLLLLLLL.L.LLLLLLL.LLLLLLLL.LLLLLL.LLLLL.LLLL.L.LLLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL
-LLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLLL.LLLLL.LLLL..LLLLLLLLLLLL.LLLLLLLL.L.LLLLLL.LLLLLLL.LLLLLLLLLL
-LLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLL.LLLLL.LLLLL.LLLLLL.LLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLL
-LLLL.LLLLLL.L..LLLLLLLL.LLLLLLLLL.LLLLLLLLLLL.LLLLLL.LLLLL.LLLL.LLLLLL.LLLLL.LLLLLLLLLLLLLLLLLL
-LLLLLLLLLLL.L.LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LL.LLL.LLLLL.LLLLLL.L.LLLLLLLL.LLLLLLLLLL.LLLLLLL
-LLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLL.LLLLL.LLLLL.LLLLLLLL.LLL.LLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLL
-LLLLLLLL..LLLLLLLLLLLLL.LLLLLLLLLLLLLLL.LLLLL.LLLLLL.LLLLL.LLLLLLLL.LLLLLLLL.LLLLLLL.LLLLLLLLLL
-LLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLLL.LLLLLLLLLLL.LLLLLL.LLLLL.LLLLLLLL.LLLLLLLL.L.LLLLL.LLLLLLLLLL
-L..LL...L...L...L.LL..LL......LL..LL....L.L...........L.L...L....LL.LL.L..LL....L..L.........LL
-L.LLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLL
-LLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLL.LLLLLL.LLLLL.LLLLLLL.LL.LLLLLL.LLLLLLL.LLLLLLLLLL
-LLLLLLL.LL.LL.LLLLLLLLL.LLLLLLLLLLLL.LL.LLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLL
-LLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLL.LL.LLLLL.LLLLLLLL.LLLLLLLLLLLLLL..LL
-LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLL..LLLLLL.LLLLL.LLLL.LLL.LLLLLLLLL.LLLLLLLLLLLLLL.LL
-LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLL.LLLLL.LLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL
-LLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLLLLLLLLL.L.LLL.LLLLLL.LLLLL.LLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLL
-.L.LL..L...L........L.......L.....L.L.L....L......L.LL......L...LL.L.LLLL...LLL.L...L..L.LLLL..
-LLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.L.LLLLLLLLLLLLLLLLLL
-L.LLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLL.LLLLLLLL.LLL.L.L.LLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLL.LL
-LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL..LLLL.LLLLLLLL.LLLLLLLLL.LLLLLLLL.LLLLLLLL.LLLLLLL.LLLLLLLLLL
-L.LLLLLLLLLLLLLLLLLLLLL.L.LLLLLLL.LLLLL.LLLL..LLLLLL.LLL.L.LLLLLLLL.LLLLLLLLLLLLLLLL.LLLL.LLLLL
-LLLLLLLL.LLLL.LLLLLLL.LLLLLLLLLLL.LLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLLL.LLLLLLLL.LLLL.LL.LLLLL.LLLL
-LLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLL.LLLLL.LLLLL.LLLLLL.LLLLLLLLLLLLLL.LLLLLLLL.LLLLL.L.LLLLLL.LLL
-LLLLLLLLLL.LLLLLLLLLLLL.LLLLLLLLL.LLLLL.LLLLL..LLLLL.LLLLL.LL.LLLLL.LLLLLLLL.LLLLLLL.LLLLLLLLLL
-....LLL.L...LL.L.LLLLLL...L........L.L...L.L.L..L....LL..LL.L..LL...L.L.LLL.LL...LL..L.L..LL...
-LLLLLLLLLLLLL.LLLLLLLLL.LLLL.LLLL..LLLLLLLLLL.LLLLLL.LLLLL.LLLLLLLL.LLLLLLLL.L.LLLLL.LLLLLLLLLL
-LLLLLLLL..LLLLLLLLLLLLL.LLLLLLLLL.LLLLL.LLLLL.LLLLLL.LLLLL.LLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLL
-LLLLLLLLL.LLL.LLLLLLLLL.LLLLLLLLL.LLLLL..LLLL.LLLLLLLLLLLL.LLLLLLLL.LLLLLLLL.LLLLLLL.L.LLLLLLLL
-LLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLL.LLLLL.LLLL..LLLLLL.LLLLL.LLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLL.L
-LLLLLLL.LLLL..LLL.LLLLLLLLLLLLLLLLLLLLL.LLLLL..LLLLL.LL.LL.LLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLL
-LLL.LLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLL
-L.LL.LLL.LLLL.LLLLLLLLL.LLLLLLLLL.LLLLL.LLL.L.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LL.LLLLLLL.LLLLLL.LLL
-LLLLLLLLLL.LL.LLLLLLLLL.LLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLL.LL
-LLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLLL.LLLLL.LLLLL.L.LLLL.LLLLL.LLLLLLLLLLLLLLLLL.LLL.LLLLLLLLLLLLLL
-LLLLLLLL.LLLL.LLLLLLLLLLLLLL.LLLL.LLLLLLLLLLL.LLLLLLLLLLLL.LLLLLLLL.LLLLLLLL.LLLLLLL.L.LLLLL.LL
-LLLLLLLL.LLLL.LLLLLLLLL.LLLLL.LLLLLLLLL.LLLLL.LLLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLL
diff --git a/11/part1.c b/11/part1.c
deleted file mode 100644
index 459befe..0000000
--- a/11/part1.c
+++ /dev/null
@@ -1,123 +0,0 @@
-#include <stdio.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <malloc.h>
-#include <string.h>
-
-#define MAX_INPUT_WIDTH 128
-#define MAX_INPUT_HEIGTH 128
-#define MAX_INPUT MAX_INPUT_WIDTH * MAX_INPUT_HEIGTH
-
-int count_char(const char *source, char search)
-{
- int oc = 0;
- do {
- oc += *source == search;
- } while (*++source);
-
- return oc;
-}
-
-void replace_char(char *destination, const char *source, char original, char replace)
-{
- do {
- if (*source == original) {
- *destination = replace;
- }
- else {
- *destination = *source;
- }
- } while (++destination && *++source);
- *destination = 0;
-}
-
-int sur_oc_seats(const char *source, size_t width, size_t height, size_t index_y, size_t index_x)
-{
- int num = 0;
- // Check 3 seats on the line above
- if (index_y > 0) {
- size_t x = index_x == 0 ? index_x : index_x - 1;
- size_t end_x = index_x < width - 1 ? index_x + 2 : index_x + 1;
- for (; x < end_x; x++) {
- num += source[(index_y - 1) * width + x] == '#';
- }
- }
-
- // Check sides
- if (index_x > 0) {
- num += source[index_y * width + index_x - 1] == '#';
- }
-
- if (index_x < width - 1) {
- num += source[index_y * width + index_x + 1] == '#';
- }
-
- // Check 3 seats on the line above
- if (index_y < height - 1) {
- size_t x = index_x == 0 ? index_x : index_x - 1;
- size_t end_x = index_x < width - 1 ? index_x + 2 : index_x + 1;
- for (; x < end_x; x++) {
- num += source[(index_y + 1) * width + x] == '#';
- }
- }
-
- return num;
-}
-
-int solve(const char *filename)
-{
- FILE *file = fopen(filename, "r");
-
- // Include space for newline and string terminator
- char buffer[128] = { 0 };
-
- char input[MAX_INPUT] = { 0 };
- size_t height = 1;
- fgets(buffer, 128, file);
- size_t width = strchr(buffer, '\n') - buffer;
- replace_char(input, buffer, 'L', '#');
-
- while (fgets(buffer, 128, file)) {
- // Round 1
- replace_char(&input[height++ * width], buffer, 'L', '#');
- }
-
- fclose(file);
-
- size_t size = height * width;
-
- // Zero terminate
- input[size] = 0;
-
- char input2[MAX_INPUT] = { 0 };
- do {
- for (size_t i = 0; i < size; i++) {
- if (input[i] == '.') {
- input2[i] = '.';
- }
- else if (input[i] == 'L') {
- if (sur_oc_seats(input, width, height, i / width, i % width) == 0) {
- input2[i] = '#';
- }
- else {
- input2[i] = 'L';
- }
- }
- else if (input[i] == '#') {
- if (sur_oc_seats(input, width, height, i / width, i % width) >= 4) {
- input2[i] = 'L';
- }
- else {
- input2[i] = '#';
- }
- }
- }
- } while (memcmp(input, input2, size) && memcpy(input, input2, size));
-
- return count_char(input, '#');
-}
-
-int main(int argc, char *argv[])
-{
- printf("%i\n", solve(argv[argc - 1]));
-}
diff --git a/11/part2.c b/11/part2.c
deleted file mode 100644
index 2443ddd..0000000
--- a/11/part2.c
+++ /dev/null
@@ -1,202 +0,0 @@
-#include <stdio.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <malloc.h>
-#include <string.h>
-
-#define MAX_INPUT_WIDTH 128
-#define MAX_INPUT_HEIGTH 128
-#define MAX_INPUT MAX_INPUT_WIDTH * MAX_INPUT_HEIGTH
-
-int count_char(const char *source, char search)
-{
- int oc = 0;
- do {
- oc += *source == search;
- } while (*++source);
-
- return oc;
-}
-
-void replace_char(char *destination, const char *source, char original, char replace)
-{
- do {
- if (*source == original) {
- *destination = replace;
- }
- else {
- *destination = *source;
- }
- } while (++destination && *++source);
- *destination = 0;
-}
-
-char get_char(const char *source, size_t width, size_t y, size_t x) {
- return source[y * width + x];
-}
-
-int sur_oc_seats(const char *source, size_t width, size_t height, size_t index_y, size_t index_x)
-{
- int num = 0;
- // Check upwards
- size_t y = index_y;
- size_t x = index_x;
- while (--y < height) {
- char c = get_char(source, width, y, x);
- if (c == '.') {
- continue;
- }
-
- num += c == '#';
- break;
- }
-
- // Check downwards
- y = index_y;
- while (++y < height) {
- char c = get_char(source, width, y, x);
- if (c == '.') {
- continue;
- }
-
- num += c == '#';
- break;
- }
-
- // Check left
- y = index_y;
- x = index_x;
- while (--x < width) {
- char c = get_char(source, width, y, x);
- if (c == '.') {
- continue;
- }
-
- num += c == '#';
- break;
- }
-
- // Check right
- x = index_x;
- while (++x < width) {
- char c = get_char(source, width, y, x);
- if (c == '.') {
- continue;
- }
-
- num += c == '#';
- break;
- }
-
- // Check left upwards
- y = index_y;
- x = index_x;
- while (--y < height && --x < width) {
- char c = get_char(source, width, y, x);
- if (c == '.') {
- continue;
- }
-
- num += c == '#';
- break;
- }
-
- // Check left downwards
- y = index_y;
- x = index_x;
- while (++y < height && --x < width) {
- char c = get_char(source, width, y, x);
- if (c == '.') {
- continue;
- }
-
- num += c == '#';
- break;
- }
-
- // Check right upwards
- y = index_y;
- x = index_x;
- while (--y < height && ++x < width) {
- char c = get_char(source, width, y, x);
- if (c == '.') {
- continue;
- }
-
- num += c == '#';
- break;
- }
-
- // Check right downwards
- y = index_y;
- x = index_x;
- while (++y < height && ++x < width ) {
- char c = get_char(source, width, y, x);
- if (c == '.') {
- continue;
- }
-
- num += c == '#';
- break;
- }
-
- return num;
-}
-
-int solve(const char *filename)
-{
- FILE *file = fopen(filename, "r");
-
- // Include space for newline and string terminator
- char buffer[128] = { 0 };
-
- char input[MAX_INPUT] = { 0 };
- size_t height = 1;
- fgets(buffer, 128, file);
- size_t width = strchr(buffer, '\n') - buffer;
- replace_char(input, buffer, 'L', '#');
-
- while (fgets(buffer, 128, file)) {
- // Round 1
- replace_char(&input[height++ * width], buffer, 'L', '#');
- }
-
- fclose(file);
-
- size_t size = height * width;
-
- // Zero terminate
- input[size] = 0;
-
- char input2[MAX_INPUT] = { 0 };
- do {
- for (size_t i = 0; i < size; i++) {
- if (input[i] == '.') {
- input2[i] = '.';
- }
- else if (input[i] == 'L') {
- if (sur_oc_seats(input, width, height, i / width, i % width) == 0) {
- input2[i] = '#';
- }
- else {
- input2[i] = 'L';
- }
- }
- else if (input[i] == '#') {
- if (sur_oc_seats(input, width, height, i / width, i % width) >= 5) {
- input2[i] = 'L';
- }
- else {
- input2[i] = '#';
- }
- }
- }
- } while (memcmp(input, input2, size) && memcpy(input, input2, size));
-
- return count_char(input, '#');
-}
-
-int main(int argc, char *argv[])
-{
- printf("%i\n", solve(argv[argc - 1]));
-}
diff --git a/11/testinput b/11/testinput
deleted file mode 100644
index cdea6b5..0000000
--- a/11/testinput
+++ /dev/null
@@ -1,10 +0,0 @@
-#.##.##.##
-#######.##
-#.#.#..#..
-####.##.##
-#.##.##.##
-#.#####.##
-..#.#.....
-##########
-#.######.#
-#.#####.##