#include #include #define SERIAL 7347 #define DIMENSIONS 300 int initialFieldValue(int x, int y) { int id = x + 10; int power = id * y + SERIAL; power *= id; char itoa [10]; int len = sprintf(itoa, "%d", power); if (len < 3) { return 0; } // manually set a nullbyte after the hundreds digit itoa[len-2] = 0; int parsed = (int) strtol(&itoa[len-3], NULL, 10); return parsed - 5; } void setFields(int fields[DIMENSIONS][DIMENSIONS]) { for (int i=0; i b ? a : b; } int calculateNeighborhood(int fields[DIMENSIONS][DIMENSIONS], int x, int y, int size) { return fields[x-1][y-1] + fields[x+size][y+size] - fields[x-1][y+size] - fields[x+size][y-1]; } int main() { int fields[DIMENSIONS][DIMENSIONS]; setFields(fields); int summedAreaFields[DIMENSIONS][DIMENSIONS]; setSummedArea(summedAreaFields, fields); // Part 1 int maxPower = -999999999; int maxX, maxY; int maxSize = 0; for (int x=1; x maxPower) { maxPower = moore; maxX = x + 1; maxY = y + 1; maxSize = size + 1; } } } } printf("x: %d, y: %d, size: %d, power: %d\n", maxX, maxY, maxSize, maxPower); return 0; }