#include <stdio.h>
#define sizeY 10
#define sizeX 10
#define LIVE 1
#define DEAD 0
typedef struct {
int y;
int x;
unsigned char status;
} TableType;
void printTable(TableType grid[], int table_size) {
int i;
for (i = 0; i < table_size; i++) {
//printf ("P(%d,%d) = ", grid[i].x, grid[i].y);
if (i % sizeY == 0 && i != 0) {
}
if (grid[i].status == LIVE) {
} else {
}
}
}
void clearTable(TableType grid[], int table_size) {
int i = 0;
int height, width;
for (height = 0; height < sizeY; height++) {
for (width = 0; width < sizeX; width++) {
grid[i].y = height;
grid[i].x = width;
grid[i].status = DEAD;
//printf ("Setting P(%d,%d) to DEAD\n", width, height);
i++;
}
}
}
int findIndexForPoint(TableType grid[], int table_size, int x, int y) {
int i;
for (i = 0; i < table_size; i++) {
if (grid[i].x == x && grid[i].y == y) {
// found it
return i;
}
}
// not found, return -1;
return -1;
}
int main () {
TableType grid[sizeX*sizeY] = {0};
clearTable(grid, sizeX*sizeY);
// access via index but you are not sure which x,y
grid[10].status = LIVE;
// This way you know exactly which x,y
int index = findIndexForPoint (grid,sizeX*sizeY,5,3);
if (index != -1) {
grid[index].status = LIVE;
}
printTable(grid, sizeX*sizeY);
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNkZWZpbmUgc2l6ZVkgMTAKI2RlZmluZSBzaXplWCAxMAojZGVmaW5lIExJVkUgMQojZGVmaW5lIERFQUQgMAoKdHlwZWRlZiBzdHJ1Y3QgewogICAgaW50IHk7CiAgICBpbnQgeDsKICAgIHVuc2lnbmVkIGNoYXIgc3RhdHVzOwp9IFRhYmxlVHlwZTsKCgp2b2lkIHByaW50VGFibGUoVGFibGVUeXBlIGdyaWRbXSwgaW50IHRhYmxlX3NpemUpIHsKICAgIGludCBpOwogICAgZm9yIChpID0gMDsgaSA8IHRhYmxlX3NpemU7IGkrKykgewogICAgICAvL3ByaW50ZiAoIlAoJWQsJWQpID0gIiwgZ3JpZFtpXS54LCBncmlkW2ldLnkpOyAKCiAgICAgIGlmIChpICUgc2l6ZVkgPT0gMCAmJiBpICE9IDApIHsKICAgICAgICAgIHByaW50ZigiXG4iKTsKICAgICAgfQoKICAgICAgaWYgKGdyaWRbaV0uc3RhdHVzID09IExJVkUpIHsKICAgICAgICAgIHByaW50ZigiWCIpOwogICAgICB9IGVsc2UgewogICAgICAgICAgcHJpbnRmKCItIik7CiAgICAgIH0KICAgIH0KICAgIHByaW50ZigiXG4iKTsKfQoKdm9pZCBjbGVhclRhYmxlKFRhYmxlVHlwZSBncmlkW10sIGludCB0YWJsZV9zaXplKSB7CiAgICBpbnQgaSA9IDA7CiAgICBpbnQgaGVpZ2h0LCB3aWR0aDsKICAgIGZvciAoaGVpZ2h0ID0gMDsgaGVpZ2h0IDwgc2l6ZVk7IGhlaWdodCsrKSB7CiAgICAgICAgZm9yICh3aWR0aCA9IDA7IHdpZHRoIDwgc2l6ZVg7IHdpZHRoKyspIHsKICAgICAgICAgICAgZ3JpZFtpXS55ID0gaGVpZ2h0OwogICAgICAgICAgICBncmlkW2ldLnggPSB3aWR0aDsKICAgICAgICAgICAgZ3JpZFtpXS5zdGF0dXMgPSBERUFEOwogICAgICAgICAgICAvL3ByaW50ZiAoIlNldHRpbmcgUCglZCwlZCkgdG8gREVBRFxuIiwgd2lkdGgsIGhlaWdodCk7CiAgICAgICAgICAgIGkrKzsKICAgICAgICB9CiAgICB9Cn0KCmludCBmaW5kSW5kZXhGb3JQb2ludChUYWJsZVR5cGUgZ3JpZFtdLCBpbnQgdGFibGVfc2l6ZSwgaW50IHgsIGludCB5KSB7CiAgIGludCBpOwogICBmb3IgKGkgPSAwOyBpIDwgdGFibGVfc2l6ZTsgaSsrKSB7CiAgICAgIGlmIChncmlkW2ldLnggPT0geCAmJiBncmlkW2ldLnkgPT0geSkgewogICAgICAgICAvLyBmb3VuZCBpdAogICAgICAgICByZXR1cm4gaTsKICAgICAgfQogICB9CgogICAvLyBub3QgZm91bmQsIHJldHVybiAtMTsKICAgcmV0dXJuIC0xOwp9CgoKaW50IG1haW4gKCkgewogICBUYWJsZVR5cGUgZ3JpZFtzaXplWCpzaXplWV0gPSB7MH07CiAgIGNsZWFyVGFibGUoZ3JpZCwgc2l6ZVgqc2l6ZVkpOwoKICAgLy8gYWNjZXNzIHZpYSBpbmRleCBidXQgeW91IGFyZSBub3Qgc3VyZSB3aGljaCB4LHkKICAgZ3JpZFsxMF0uc3RhdHVzID0gTElWRTsgCgogICAvLyBUaGlzIHdheSB5b3Uga25vdyBleGFjdGx5IHdoaWNoIHgseQogICBpbnQgaW5kZXggPSBmaW5kSW5kZXhGb3JQb2ludCAoZ3JpZCxzaXplWCpzaXplWSw1LDMpOwogICBpZiAoaW5kZXggIT0gLTEpIHsKICAgICAgZ3JpZFtpbmRleF0uc3RhdHVzID0gTElWRTsKICAgfQoKICAgcHJpbnRUYWJsZShncmlkLCBzaXplWCpzaXplWSk7Cn0=