From 4eebdbba9ceb6ecc9972c1cc6e427bce9cd86f38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dobos=20=C3=81d=C3=A1m?= Date: Thu, 22 Dec 2022 13:20:13 +0100 Subject: [PATCH] Day17 --- day17/input.txt | 1 + day17/jet | Bin 0 -> 16184 bytes day17/jet.c | 207 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 208 insertions(+) create mode 100644 day17/input.txt create mode 100755 day17/jet create mode 100644 day17/jet.c diff --git a/day17/input.txt b/day17/input.txt new file mode 100644 index 0000000..8f26aa8 --- /dev/null +++ b/day17/input.txt @@ -0,0 +1 @@ +><<<>><><><<<><<<<>>><>>>><<<<>>><<<>>>><>><><<>>><<<<><<>>><>><><>>><<>>><<<>><<<<>><<<>><<<><<<<>>>><<>>><<<><<>>><<>><<><<>><<<<>><<>>>><<<<>>><<<>>>><>>><<><<<<>>>><<>><<>>>><><<><<><<<<>>><<<<>>>><<<<>>>><<>><>>>><<<<>>><<<<>><<>>><>><>><<<<>>><<<><>>>><<<<><<>>><<<<>><<<<>>>><>>><<>><>>><>>>><<<<>><<<>>><>><<><<<>>><<>><<<><<>><<<>><<<<>>><<>><>><<><>>>><<<<><<<<>>>><<<>>><>><<<<>>><<><<>>>><<<><<<<>>><<<>>>><>>>><<<<>>><<<<>><<><<<<>>><<<<>>><>>>><<<<><<>><<<<><<<<>>>><><<>><>>><<>>>><<><><<>>>><>>><>><<<>>>><<>><<><<>><<<<>>><>><<<<>>><<>>><<<<>>>><<<>>><<<<>>>><<<>>>><<<<>>><<><<<>><<>>><>>>><<>><<>>><<<<>>>><<<>>>><<>>><<>><<<<>>><<<<>>><<<<>>><>>>><<<<>>>><<><<<<>>><<<<>><<<<>>>><>>>><>><>>>><<>>><>>>><<<<>>>><>>>><>>>><>>><<>>>><<<>>>><<>>><<>><<<>><><<><<>>>><<<<>><<>>><<<<>>>><<<>>>><<<<>><<<>>><>><<<<><>>><>>>><<>>>><<<<>><<>>><<<>><<>>>><>><>>><<>>>><<<>><<<<><<<><<>>>><<<><>>><<<<>>>><<<>>><>><<<<>>><<>>>><<<<><<>>>><<<><<<<>><>><<><<>><<>>>><<><<<<>>><<><>><<>><>>>><<>>>><>>>><>>><<<<>>><>>><<>><<>>><<>>><<<>>>><<>>><>>><<<>><<<<>>><<>>>><<<<>><>>>><>>>><<<<><<<><><>><<<>><<<><<<<><<>>>><<<>>>><<<>>><<<<>>><<<>><><<<>>>><<<<>>>><<>><><>><<<><<<><><<<>>>><>>>><<>>>><<<<>>><>>>><>>>><<<><<<><<<<>>>><<<<>><<<>>><><<<<>><<<<>>>><<>>>><<><<<>>><>>>><<<><>><<<<>>>><<<>>>><<<><<<<>><<<<><>>><<<<><<<<>>><<<>><<<<>><>>>><<<<>><<>>>><<<>>>><<<<><<<<>>><<<>>>><>>>><<<<>><<<>>><<>><<>>>><<><<<<>>>><<<>>><<<>><<<>>>><>>>><>>><<>>>><<>><<<<>>><<<>><><<><<<<><<>>>><<<<>>><<<<>>><<>>>><<><<<<><<<>><>><<<>>>><<<>>>><<>>>><<<<>>>><><<<<><<><<<>>><><<<<><<>><<<>><<>>><><><<<>>><>>>><<<>><<<>>>><<><<<><<><><<<<>><<<<>>><>>><<><<<<>><<<>><<<<>><<<<><<<<><<<<>><>>>><<<>>><<<<><<<<>>>><<<>><<<<>>><<<><<<<>>><>>>><<>>><<>>><>>>><<>>>><>>>><<<>>>><<<<><<<<>><><<>>>><<>>><<<><>><<<<><><<<>>>><<>><>>>><<>><>><>>><<>>><>><<<<>>>><<><<<><<<>>><><<<<><>>>><<<>>>><>>>><<<><<<<>>>><<<<>><<<>>><<<<>>>><<<>>>><<<<>>><>><<<><<<<><<<<><<<<>><<><<<>>>><<><<<><><<<>>><>>><<><<<<>>><<<<>>>><<<<>>>><<<<>><>><<<<>>>><<<<>>>><<<<><<>>>><><<<<>>>><<<<>>>><<<<>>><<<<>>>><<>><<<>>><<><><<>>><<<<>>><<>>>><<<<>>>><<<<>>>><<<<>>>><<<<>><<<<><><<<>>><<<<><<>>>><<<<>><>>><<<><>><<>>><<<<>>><<<>>><<<<>><>>>><><>>><<<>>>><<<>>><>>>><<<<>><<<><<><<><><<>>>><<><<<><>><<<><>><<<<><<<>>>><>><<>>>><<>>>><<<<>>>><<<>>><<><<>><<<<>>>><><<>><<>>><<<<>><<<<>><<<>>><>>><<>>>><<<<>>><<<<>><<<><<<>><<>>>><<><<<<>>>><<<<>>>><>>><<><><>>><<<<>><<<<>>><<><<<<><>><<>>>><<>>><<<><<>>><>><<<>>><>><<>>><>>>><>>>><<<>><<<>>>><><<<>>>><<><<<><>>>><><>><<<<>>><><<<<>>>><<>>><<<><<<<>><><>>><>>>><<>><<<<>><<><<>>>><><<<<>>>><><<>><<<<>>>><<<>>><<<<><<<><<><><<<<>><<<><><<<><<><>>>><>><<>>>><<><<<>>><<<<>><<<>><>><><<<>>>><<>><<<<>><<<<>><>>>><><<<<><<<<>>><>>><<>>>><<<>>>><<><<>><<<><<<<>><<<<>>>><<<><>>>><><<>>><>>>><<<><<>>><>>><<<>>><<<<><>><<>>>><<<><<<>><<<<>><>>><<<>><<><<><<<<>>>><<>>><<>>>><<<<>><<><<<<>>><<>>>><<<<>>><<<>><>>><<<>><><>>>><<<<>><<>><>>>><>>><<<<>><<<><<<>>>><<<<>>><<>><<<<>>>><><<>>>><<>>>><<<><<>>>><<>>><<>>>><<<>><<<>>>><<<<>>><>>><<<><<>>>><<>>>><<>>>><<<><<<><<<>>><<<<>><<<<>>>><<><>><<><><<>>>><<<<>><<<<><<>>><<<><<>>>><<<><<>>>><<<><<<<>>><<<>>><<><>><>><<<<><<<>>><<><<>>><<><<<>>>><<<<>>>><<<>>>><<>>><<<>>><<<<>>><>>>><<<><<<>>>><<<<><<><<>>><<<<>>><>><><<<<>>><>>><<>>>><<>><<<<>><<<>>>><><>>>><<<>><>>>><<<>>><<<<>><>>><<>>><<><<>><><<<>>><><<<>><<<>>>><<<<>>><<<<>><>>>><<<>>><<<<>>><>><<>>><<><<<><<<>><<<><<<>>><>><<<<>><<><<>>><<<>>>><<>>><<<<>><<<<>><>>><<<>><<><<>>>><<<><<<<>>><<<<>>><<<>>><<<>>><<<<>><<>>><><<><<<<>><<<<>>>><<<<><<>>><>>><<><<>>>><><<<>><<<><<<<>>>><<<<><<<<><<>>>><<<><<<<>>>><><<<>>>><><>>>><<<<>><><<<><>>>><<>>>><<<<>>><<<>>>><<<><>><>>><<<><<<>><<><<<<>><<<<>>>><<<<>><<<>>>><<>>>><<>>>><>>><<<><<<>>>><<>>><<<<><<>>><<<<>>><<<<>>><<><<<>>><>>><<>>>><<<<>><<<<>><<<<><>>>><<<<><>>>><<<>>><<>>>><<<<><<><>><<<>><<<<>>><<><<<<>><>>><<<<>>><<<<>>><<><>><>><<<>>><<>>>><<>>><<<>>>><<<<>>>><<<<><<<<><>>><<>>>><<<>><<>>><<>>>><<<<><>>>><<<<>><<<>>><<<<><><><<><<>><>>>><<>>>><><>>>><<<<><<<<>><<<>><<<<>>><<<>>>><<<><<>>><<>>><<<<>>>><><<<<>><<<><<<<>>><<>>>><>>><<>>><<<><<>><<<<>>>><<<>>><<<><>>>><<>><<<<>>>><<<<>>><<<<>><<>><<<>>>><<<<>><<<>>><<><<>><<<<>><<<<>><<<>>>><<<>><<>>>><<>>>><<>>>><>>>><><>><>><<><>>><<<<>>>><>><<><>>>><<>><<>><<<><<><<<<>><>><<<>><<<<>>>><<<<><><<>>>><>>>><<>>>><<><<>>><<<><<>><<>><<<<>><<>>><<<<><<>>><>>><<<<>><>>><<<><<<>>>><<<><<<>>>><<<>>>><<>><>><<>>><<<<>>><<<>><>>>><<<><>><>>>><>>><<>>>><<<<>>>><<>>><<<>><<<>>><<<>>>><<<<>><<<<>>><<<<>><><>><<<>>>><<>>><<<><<>><>><<>>>><>>>><<><<><<>>>><>>><<<><<>>><>><<<><<<<><<<>><<<>><<<>><<>><<<<>><>><<><<<><<<<>><>><<<>><>>><<>><<><>>>><<<>><>>><<<<>>><<>>><>><<>><<>>>><<>>>><><<<>><<<>>>><<<<>>><<<>>><<<<>>>><<>>><>>>><<<><>>>><>>>><<>><>><<<<><>><<><>><<><>><<<<><<<>>>><<<>>>><<>>>><<><><>>>><>>>><<<<>>>><<<>><<>><<<>><<<<>>>><<<<>><<>>>><<<>>>><<<<>>><<><<><<<>>><<<<>>>><<>>>><<<<><<>>>><<><<<<>><<>>><<<<>>>><<<<><<<>>>><<><<><<>>>><<<<>><<<>>><<<>><<<<>><<<<>>>><<<>>><<<>><<<<><<<>>><<>>><<<<>>><<<>><><<<<>>><><<<<><><<>><>>><<>>>><><>>><<><<>>>><>>><<<<><>><<<>>>><<<<>>>><<<<>>>><<<<><>><<<<>>>><<<<>>>><<<<>>>><<>>>><<<>>>><<<<>>>><<<>>><<>>>><><<<>>>><<<>>><<><<<<>>><<<<>>>><<<<>>>><<<<>>><<<<>><<<<>><<<<><<<>>><<>>><<<><<<<><>>>><<<<>>>><>><<><<>><<<>>>><<<><<<>>>><<><<<<>>><>><>><<<>>><<<<><>>><<<>>><<<><<<<><<<><>>>><<<>>>><<>><<>>><>>>><<<><<>><>><>>><<<<>><>>>><<<<><>><>>><>>><<<>><<<>><>>><>><<<><<>>>><<<<>>><<><<<>>>><>>>><>><>>><<<<><<<>>>><>>><<<>>><<<>>><>>>><<>><<><<<<>>>><<<<>><><<<<>><>>><<>>><<<>>><>>><<<<><><<<>><>>><<<<>>>><<>>><>><<>>><<>>>><><>>><>>><<<<>><<<<>><<>>>><<<<>>>><<>>>><<<<>>>><><<<<>>>><<<<>><>>>><>>>><<<<>>><<<<><<<>>>><<<<>><<><<>>>><<>><<<>>>><<<>>>><<<><<>>><<<><<<>>><<<<>>><<>>>><<<<>>><>><<<>><<>>><<<><>>>><<<<>><>>>><>><<<>>><<>>><<<<>>><<<>><<<<>>><<<<>><<<<>>><<>>>><<<>>><<<<><<>>><<>><<<>>>><<<<>><><<<>><<<><<<<><<>>><<<>>><<>>><<<>><<<<>>>><<<<><><>><<<<><>>>><<>>>><>>>><<<>>>><<<<>><>>>><<<<>>>><<<>><<<<>><>>>><><<>>>><<<<>><<<>>>><>><><>>><<<<><<>>><><<<<>><<>><>>>><<<<><<<<>>><<<>><<<>><>><<>><>>><<><>><<>><<<><<<>>><<<<>><<>>><>><<<<>>><<<>>>><<<>>>><<<>>><<>>>><<>>><>><<<>>><<<>><>><<<<>>><<<>>>><<<>>><<<<><<>>>><>>>><>><>>>><><<<>>><><>>>><>>>><<<>>>><<>>>><<<>>><<<>>><<<>>>><>><><<<>><<<>><>>><<<>><<<<>>><<<<><<<>><<<>>><<<>>><>><<<<>>><<<><>><>>><<<>>><>><>><<><<<<><<<>><<>><>><<>>>><<<<><<<<>>>><<<<>>><>><<>>>><<<>><<<<>><<<>><<<>>>><><<<>>>><>>><<<>>>><<<<><<>><<<><>>>><<<><<><<><<>>>><<<><<>>>><>><><<>><<<<>>>><<<><<>><><<><<>><<>>><<<>><>><<<>>>><<<<>><>>>><<<<><<>><<<<>>><<<>>><<>><<<>>><<<><<<<><<<>><<>>><<>>>><<<<><<<<>>><<<>>><<>>><<>><<<<>>><<>><<>>><<<>>>><<<><>><<>>>><<<>>>><<<<><<<<><<<>>>><<><<<>><<<<>>><>>><>>><<><<>>><<<<>>><<<><<<>>>><<<<>>><<<<>>>><><>><<>>><<<<>><<><>><<><<<>><<<>><<<><<<<>><<>><<<<>><<<<>>><<<<><<<<>><<><<>>>><<<<>>>><<><<<>><<<>>><<<<>>>><<<><>>>><<<><<>>><<<<>><<<<>>>><>><<<<>><<<>><>><<<<>>><<<<>><<<<>>>><<>><>>><<>>>><<<>>><<>>>><<<<>>>><<<>>>><<>>><<>>><>><<<<><><<<>>>><<<>>>><><<<>>><<<>>><>>><<<>>><<>>><<<>><<<<><>><<<<>><<<<>><>>>><><<<<>>><<<>>><<>><>><<<<><<<>>>><<<<>><<<>><<>>><<<<><><<<<>>>><>>>><<<><>>>><<><>>>><<<<>>>><<><<>>><<<<>><>>>><<<<>>>><<>>>><<<>><<<<>><><>>>><<<<>><<>><>><<<><<>>>><<>><<<<>>>><<<><<<><<<>>>><>><>>><<<>>><<>>>><<>>>><>>>><<<<>><<>>>><<<<>><<><<<<><<<<><<<>>><<<<>><<>>><<<<>><<<>>>><<><<<<>>>><<><>>><<<>><<<><<>>><<<<><<>>><<<><>>><><<>>>><<>>>><<><<<<>>>><<<<>>>><<>><<><<>>><<<><<<>><<>><<<>>><>>><>>><<>>>><<<<><>>><<><>><>>><<>>>><><<<>>><<<><<>><<>>><<><<<<><<>>><><>>>><<<>>>><<<>>>><<<<>><>>><><<<>>>><<>>>><<<<>>><<<>>><<<>><>>><<<<>>><>><<>><<<<>><<<<>><<><<<>>><<<>><<<<>><<>>>><>>>><<<<><<<<>><<><>>><<<<>>>><><<<>>>><<>><<<>><<<>><<<>>><<<><<<><>><<<>><><>>>><<<>>>><<<>>>><<<>>>><<>>>><<<<>>>><>>>><<<>>>><<<<><<<<>>><<<>>>><<<><><<<<>>><<<><<>>><<>><<<<>>>><<>>><>>>><<<<>>><>>><<<>><<<>>><<<<>>>><<<>><>><<>><<>><<<>><<>><<<<>>>><<<><><<<<>>>><<>><>>>><<<<>>>><<<<>>>><<<<><>>>><>><<<<>><<<>><<>><<>><<><<>><><<<<>><<<>><<<>><>>><<<<>><<>><>><<<<>>><<<><>><<>>><<<>>><<>>>><<<<>><<>><>>><<><<<<>>><<>>>><<<><>><<<<>><<<<>><<><>><<<<>>><<>><<<>>>><<>><<<<>>>><<>><<><<<<>>><<><<<>>>><<>>><<>>>><<>>><<<<>>><<>>><<><<<><<>><>>><>>><<<<><<><<><<<>>>><<><<>><>>><>><<>>><>>>><<<>>>><>>>><><<<<>>>><>>><><<<<>><<<<>><<<>>>><<>>><<>>><>><<<><<<<>><>>><<<>><>><>>><><<<><<>>><<<>>>><<<><<<<>>><<>><<<>><<<><<<<><><<<>>><>><<>>>><>>><<><<<<>><<<<><<<<>><>>><<<>>><<>>><>>>><<>><<<>>>><>>><<>>><>>>><<>><<<><<<<><><<<>>>><>><<<<>>>><<><<><<<>>><><<<<>><<>>>><<<<>><<>>><<<>><<<><<<<>><<<<><<>>><<<>><<<<>><<>>><><<<<>>><<>><<<>>><<>>>><<<<>>>><<<<>>><<<><<><>>>><><<<><<<<>><<>>>><<<>>>><<<<><<<>>>><<<>>><>><<<>>><<><>>>><>>><>><<<><><<>><<<<><<<<>>>><>>><>>>><>><<<<>><><<>>><<<>>>><<<<>><<<<>><<>><<>><<>><>>><<>><<><<<>>><<<>><<<<>>><<>><<<<><><<>>><<<>><<<<>><<>>><>><<<<>>>><<<><<<<>><<<>>>><<<<>>><<>>><<>><<><>><<<><<><>>>><<>>>><><<>>>><>><>><<><<><<<<><<><<<><<<>>>><>>><>>><<<<><<><<<<>>><<><<<<>>>><<>>><<><<<<>>>><><<>><<<>>>><<<<>>>><><>>><>>><<<>>>><<>><<<<>><<<>>><<<>>><<<<>><<<<>>><<<<><<>><<><<<>>>><>>><>><<<<>>>><>><<<<>>>><><>><<<<><<<<>><>>><<>><<>>><<<><<<<><<>><<><><>>>><<<>><>><<<>>><<>><<<<>>>><><<>>><>>>><<<<>>><<<<>>><<><><<<>>><<<>><<<<>>><<>><<<>>><<><<<<>>><<<>>>><<<<>><<<<><>>><>><<<>><><<>>><<<>>>><<>><<>>><><<<<><<<>><<<<>><<<>>><<<<>><>>>><<><<<<>>>><<<<>>><<<<>>><<<<>>>><<<>>>><<>>>><<>>>><>><<<>>>><<<>>>><>>>><>>>><<><<<<>>>><<<<><>><<><<<<>>><<<>>>><<<<>>>><<<><<>>>><<<>><<>><<<>><<>><<>>><<<><<>>><<<<><<<>>>><<<<>>>><<<><<<>>><<<><<<>><>>><<>>>><<<<>>><<<><<<<><<<>><<<<>>><<<>>><<>>>><<<<>>>><<<<><<<>>><>><>>>><<<>>><<<>>>><><<<>><<<>>><<<>>><<><<<<>>>><<>><<<>>>><<><<<><><<<><<<>><<<<>>>><<>>><<<<>>>><<>>><>>>><<>>>><<><<<>>>><<<>>>><<<>>>><<<<><<>>><>>>><<<<>>>><<<<>>><<<<>>><<><<<>><<<>><<<><<<<>>><>>><>><>>>><><><<<<>>>><>>>><<<<><<<>><<<<>><>>><<<>>><<<><<<>>>><<<><<<<>>><<<>><>>>><<>>><<<>>><<<>>><<<<><>>><<<>>><<<>>>><<<<><><<>><<><<<><<>><<><<<>>><<<<>><<<>>><>>>><><>>>><<<<>>>><>>><>>><< diff --git a/day17/jet b/day17/jet new file mode 100755 index 0000000000000000000000000000000000000000..98239bf9d11b14594b6ef57dad7d183361cc86f3 GIT binary patch literal 16184 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 +#include +#include + +#define MAX_JET_PATTERN 16*1024 +#define MAX_STATINARY_ROCK_LAYERS 2*1024*1024 +#define ROW_WIDTH 7 +#define ROCK_TYPE_COUNT 5 +#define ROCK_THRESHOLD 1000000000000ULL + +typedef enum direction { + LEFT, + RIGHT, +} DIRECTION; + +// Each rock will consist a maximum of 5 elements +// The elements array contains relative positions to the refElement +// By convention the refElement is always the position that is +// the bottom left corner of the rock's enclosing rectangle +// (Not always part of the rock itself) +// The refElement is used for universal spawning of the rocks +typedef struct rock { + int element_count; + int refElement[2]; + int elements[5][2]; +} ROCK; + +int main() { + char c; + + DIRECTION *jetPattern; + jetPattern = (DIRECTION*)malloc(MAX_JET_PATTERN * sizeof(DIRECTION)); + memset(jetPattern, 0, MAX_JET_PATTERN * sizeof(DIRECTION)); + unsigned jetPattern_count = 0, currJet = 0; + + while ((c = getchar()) != EOF) { + switch (c) { + case '<': + jetPattern[jetPattern_count] = LEFT; + break; + case '>': + jetPattern[jetPattern_count] = RIGHT; + break; + default: + jetPattern_count--; + } + jetPattern_count++; + } + + // We will store the stationary rocks by row + int **rocks = (int**)malloc(MAX_STATINARY_ROCK_LAYERS * sizeof(int*)); + for (int i = 0; i < MAX_STATINARY_ROCK_LAYERS; i++) { + rocks[i] = (int*)malloc(ROW_WIDTH * sizeof(int)); + memset(rocks[i], 0, ROW_WIDTH * sizeof(int)); + } + + // Highest rock layer + long highestLayer = -1; + + // Define every rock type + ROCK rockTypes[ROCK_TYPE_COUNT] = { + { .element_count = 4, .refElement = {0, 0}, .elements = {{0,0}, {0,1}, {0,2}, {0,3}}}, + { .element_count = 5, .refElement = {0, 0}, .elements = {{1,0}, {0,1}, {1,1}, {2,1}, {1,2}}}, + { .element_count = 5, .refElement = {0, 0}, .elements = {{0,0}, {0,1}, {0,2}, {1,2}, {2,2}}}, + { .element_count = 4, .refElement = {0, 0}, .elements = {{0,0}, {1,0}, {2,0}, {3,0}}}, + { .element_count = 4, .refElement = {0, 0}, .elements = {{0,0}, {0,1}, {1,0}, {1,1}}} + }; + + int currentRock = 0; + unsigned long long rockBottomCount = 0ULL, cumHighestLayer = 0ULL; + + while (rockBottomCount != ROCK_THRESHOLD) { + // Handle overflow + if (currentRock == ROCK_TYPE_COUNT) { + currentRock = 0; + } + // Spawn new rock + rockTypes[currentRock].refElement[0] = highestLayer + 4; + rockTypes[currentRock].refElement[1] = 2; + + // Fall + int bottom = 0; + do { + if (currJet == jetPattern_count) { + currJet = 0; + } + // Jet + ROCK currentPosition = rockTypes[currentRock]; + // Move to jet direction + int xdirection = 0; + switch (jetPattern[currJet]) { + case LEFT: + xdirection = -1; + break; + case RIGHT: + xdirection = 1; + break; + } + + rockTypes[currentRock].refElement[1] += xdirection; + + int collision = 0; + if (rockTypes[currentRock].refElement[1] == -1) { + collision = 1; + } + if (!collision) { + for (int i = 0; i < rockTypes[currentRock].element_count; i++) { + if (rockTypes[currentRock].refElement[1] + rockTypes[currentRock].elements[i][1] == ROW_WIDTH) { + collision = 1; + break; + } + + if (rocks[rockTypes[currentRock].refElement[0]+rockTypes[currentRock].elements[i][0]][rockTypes[currentRock].refElement[1]+rockTypes[currentRock].elements[i][1]]) { + collision = 1; + break; + } + } + } + + if (collision) { + rockTypes[currentRock] = currentPosition; + } + + collision = 0; + // Fall + if (rockTypes[currentRock].refElement[0] == 0) { + collision = 1; + } + if (!collision) { + for (int i = 0; i < rockTypes[currentRock].element_count; i++) { + if (rocks[rockTypes[currentRock].refElement[0]+rockTypes[currentRock].elements[i][0]-1][rockTypes[currentRock].refElement[1]+rockTypes[currentRock].elements[i][1]]) { + collision = 1; + break; + } + } + } + + if (collision) { + bottom = 1; + } else { + rockTypes[currentRock].refElement[0]--; + } + + currJet++; + } while(!bottom); + + rockBottomCount++; + // Freeze rock + for (int i = 0; i < rockTypes[currentRock].element_count; i++) { + rocks[rockTypes[currentRock].refElement[0] + rockTypes[currentRock].elements[i][0]][rockTypes[currentRock].refElement[1] + rockTypes[currentRock].elements[i][1]] = 1; + if (rockTypes[currentRock].refElement[0] + rockTypes[currentRock].elements[i][0] > highestLayer) { + highestLayer = rockTypes[currentRock].refElement[0] + rockTypes[currentRock].elements[i][0]; + } + } + + currentRock++; + + int repeating; + + // The commented out code below calculates the repeat period (2597) + // in rock layers. After that you can get the number of rocks in the + // period (1705). It also outputs the offset (302) which can also be + // converted to number of rocks (205) + if (rockBottomCount == 205) { + rockBottomCount += ((ROCK_THRESHOLD-205)/1705)*1705; + cumHighestLayer += ((ROCK_THRESHOLD-205)/1705)*2597; + } + + // We have reached our memory limit, we must find the repeating pattern +// if (highestLayer >= (MAX_STATINARY_ROCK_LAYERS) - 10) { +// for (long long j = 2; j <= MAX_STATINARY_ROCK_LAYERS/32; j++) { +// for (long long i = 0; i < j; i++) { +// repeating = 1; +// for (long long k = 1; k < (MAX_STATINARY_ROCK_LAYERS-i)/j; k++) { +// for (long long l = 0; l < j; l++) { +// if (memcmp(rocks[i+l], rocks[i+k*j+l], ROW_WIDTH) != 0) { +// repeating = 0; +// break; +// } +// } +// if (repeating) { +// break; +// } +// } +// if (repeating) { +// printf("Repeat period: %lli Repeat offset: %lli\n", j, i); +// break; +// } +// } +// if (repeating) { +// break; +// } +// } +// } +// if (repeating) { +// break; +// } + } + + printf("%llu\n", cumHighestLayer + (unsigned long long)highestLayer + 1ULL); + + free(jetPattern); + for (int i = 0; i < MAX_STATINARY_ROCK_LAYERS; i++) { + free(rocks[i]); + } + free(rocks); +}