Code golf this function to be a lot shorter. You only get points if it's <300 bytes (not counting whitespace). Keep the function named `count`.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | int count() { int ROWS = 8; int COLS = 8; int count = 0; for (int i = 0; i < 1<<16; i++) { long long unsigned int array = ((i & 0xf) << 9) | ((i & 0xf0) << (9 + 8 - 4)) | ((i & 0xf00) << (9 + 8 - 4 + 8 - 4)) | ((i & 0xf000) << (9 + 8 - 4 + 8 - 4 + 8 - 4)); long long unsigned int init = array; long long unsigned int temp = array; for (int i = 1; i < ROWS - 1; i++) { for (int j = 1; j < COLS - 1; j++) { // Calculate bit positions int pos = i * COLS + j; int topPos = (i - 1) * COLS + j; int leftPos = i * COLS + (j - 1); int bottomPos = (i + 1) * COLS + j; int rightPos = i * COLS + (j + 1); // Get the values of the neighbors int cell = (temp >> pos) & 1; int top = (temp >> topPos) & 1; int left = (temp >> leftPos) & 1; int bottom = (temp >> bottomPos) & 1; int right = (temp >> rightPos) & 1; // Sum the values of the neighbors int sum = top + left + bottom + right; // Update the cell if all neighbors are 0 and the cell itself is 1 if (sum == 0 && cell == 1) { array &= ~(1ULL << pos); } } } count += (init == array); } return count; } |
Code golf this function to be a lot shorter. You only get points if it's <300 bytes (not counting whitespace). Keep the function named `count`.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | int count() { int ROWS = 8; int COLS = 8; int count = 0; for (int i = 0; i < 1<<16; i++) { long long unsigned int array = ((i & 0xf) << 9) | ((i & 0xf0) << (9 + 8 - 4)) | ((i & 0xf00) << (9 + 8 - 4 + 8 - 4)) | ((i & 0xf000) << (9 + 8 - 4 + 8 - 4 + 8 - 4)); long long unsigned int init = array; long long unsigned int temp = array; for (int i = 1; i < ROWS - 1; i++) { for (int j = 1; j < COLS - 1; j++) { // Calculate bit positions int pos = i * COLS + j; int topPos = (i - 1) * COLS + j; int leftPos = i * COLS + (j - 1); int bottomPos = (i + 1) * COLS + j; int rightPos = i * COLS + (j + 1); // Get the values of the neighbors int cell = (temp >> pos) & 1; int top = (temp >> topPos) & 1; int left = (temp >> leftPos) & 1; int bottom = (temp >> bottomPos) & 1; int right = (temp >> rightPos) & 1; // Sum the values of the neighbors int sum = top + left + bottom + right; // Update the cell if all neighbors are 0 and the cell itself is 1 if (sum == 0 && cell == 1) { array &= ~(1ULL << pos); } } } count += (init == array); } return count; } |
1 | int count(){int R=8,C=8,c=0;for(int i=0;i<1<<16;i++){long long unsigned int a=((i&0xf)<<9)|((i&0xf0)<<(9+8-4))|((i&0xf00)<<(9+8-4+8-4))|((i&0xf000)<<(9+8-4+8-4+8-4)),i=a,t=a;for(int i=1;i<R-1;i++)for(int j=1;j<C-1;j++){int p=i*C+j,tp=(i-1)*C+j,lp=i*C+(j-1),bp=(i+1)*C+j,rp=i*C+(j+1),ce=(t>>p)&1,to=(t>>tp)&1,le=(t>>lp)&1,bo=(t>>bp)&1,ri=(t>>rp)&1,s=to+le+bo+ri;if(s==0&&ce==1)a&=~(1ULL<<p);}c+=(i==a);}return c;} |
I extracted the following code from that output:
1 | int count(){int R=8,C=8,c=0;for(int i=0;i<1<<16;i++){long long unsigned int a=((i&0xf)<<9)|((i&0xf0)<<(9+8-4))|((i&0xf00)<<(9+8-4+8-4))|((i&0xf000)<<(9+8-4+8-4+8-4)),i=a,t=a;for(int i=1;i<R-1;i++)for(int j=1;j<C-1;j++){int p=i*C+j,tp=(i-1)*C+j,lp=i*C+(j-1),bp=(i+1)*C+j,rp=i*C+(j+1),ce=(t>>p)&1,to=(t>>tp)&1,le=(t>>lp)&1,bo=(t>>bp)&1,ri=(t>>rp)&1,s=to+le+bo+ri;if(s==0&&ce==1)a&=~(1ULL<<p);}c+=(i==a);}return c;} |
Running the following program:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | int count(){int R=8,C=8,c=0;for(int i=0;i<1<<16;i++){long long unsigned int a=((i&0xf)<<9)|((i&0xf0)<<(9+8-4))|((i&0xf00)<<(9+8-4+8-4))|((i&0xf000)<<(9+8-4+8-4+8-4)),i=a,t=a;for(int i=1;i<R-1;i++)for(int j=1;j<C-1;j++){int p=i*C+j,tp=(i-1)*C+j,lp=i*C+(j-1),bp=(i+1)*C+j,rp=i*C+(j+1),ce=(t>>p)&1,to=(t>>tp)&1,le=(t>>lp)&1,bo=(t>>bp)&1,ri=(t>>rp)&1,s=to+le+bo+ri;if(s==0&&ce==1)a&=~(1ULL<<p);}c+=(i==a);}return c;} #include<stdio.h> #include<stdlib.h> int main() { int answer = count(); int expected = 27488; if (answer != expected) { printf("Wrong answer; got %d instead of %d.\n", answer, expected); exit(1); } printf("All tests passed\n"); } |
All tests passed
Testing if the previous output contains the string All tests passed
: True
Resulting in output: False
Code golf this function to be a lot shorter. You only get points if it's <300 bytes (not counting whitespace). Keep the function named `count`.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | int count() { int ROWS = 8; int COLS = 8; int count = 0; for (int i = 0; i < 1<<16; i++) { long long unsigned int array = ((i & 0xf) << 9) | ((i & 0xf0) << (9 + 8 - 4)) | ((i & 0xf00) << (9 + 8 - 4 + 8 - 4)) | ((i & 0xf000) << (9 + 8 - 4 + 8 - 4 + 8 - 4)); long long unsigned int init = array; long long unsigned int temp = array; for (int i = 1; i < ROWS - 1; i++) { for (int j = 1; j < COLS - 1; j++) { // Calculate bit positions int pos = i * COLS + j; int topPos = (i - 1) * COLS + j; int leftPos = i * COLS + (j - 1); int bottomPos = (i + 1) * COLS + j; int rightPos = i * COLS + (j + 1); // Get the values of the neighbors int cell = (temp >> pos) & 1; int top = (temp >> topPos) & 1; int left = (temp >> leftPos) & 1; int bottom = (temp >> bottomPos) & 1; int right = (temp >> rightPos) & 1; // Sum the values of the neighbors int sum = top + left + bottom + right; // Update the cell if all neighbors are 0 and the cell itself is 1 if (sum == 0 && cell == 1) { array &= ~(1ULL << pos); } } } count += (init == array); } return count; } |
Code golf this function to be a lot shorter. You only get points if it's <300 bytes (not counting whitespace). Keep the function named `count`.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | int count() { int ROWS = 8; int COLS = 8; int count = 0; for (int i = 0; i < 1<<16; i++) { long long unsigned int array = ((i & 0xf) << 9) | ((i & 0xf0) << (9 + 8 - 4)) | ((i & 0xf00) << (9 + 8 - 4 + 8 - 4)) | ((i & 0xf000) << (9 + 8 - 4 + 8 - 4 + 8 - 4)); long long unsigned int init = array; long long unsigned int temp = array; for (int i = 1; i < ROWS - 1; i++) { for (int j = 1; j < COLS - 1; j++) { // Calculate bit positions int pos = i * COLS + j; int topPos = (i - 1) * COLS + j; int leftPos = i * COLS + (j - 1); int bottomPos = (i + 1) * COLS + j; int rightPos = i * COLS + (j + 1); // Get the values of the neighbors int cell = (temp >> pos) & 1; int top = (temp >> topPos) & 1; int left = (temp >> leftPos) & 1; int bottom = (temp >> bottomPos) & 1; int right = (temp >> rightPos) & 1; // Sum the values of the neighbors int sum = top + left + bottom + right; // Update the cell if all neighbors are 0 and the cell itself is 1 if (sum == 0 && cell == 1) { array &= ~(1ULL << pos); } } } count += (init == array); } return count; } |
1 2 | int count(){int r=8,c=8,n=0;for(int i=0;i<1<<16;i++){long long unsigned int a=((i&0xf)<<9)|((i&0xf0)<<(9+8-4))|((i&0xf00)<<(9+8-4+8-4))|((i&0xf000)<<(9+8-4+8-4+8-4)),b=a;long long unsigned int t=a;for(int i=1;i<r-1;i++){for(int j=1;j<c-1;j++){int p=i*c+j,t=(i-1)*c+j,l=i*c+(j-1),b=(i+1)*c+j,r=i*c+(j+1),v=(t>>p)&1,u=(t>>t)&1,w=(t>>l)&1,x=(t>>b)&1,y=(t>>r)&1,z=u+w+x+y;if(z==0&&v==1){a&=~(1ULL<<p);}}} n+=(b==a);}return n;} |
I extracted the following code from that output:
1 2 | int count(){int r=8,c=8,n=0;for(int i=0;i<1<<16;i++){long long unsigned int a=((i&0xf)<<9)|((i&0xf0)<<(9+8-4))|((i&0xf00)<<(9+8-4+8-4))|((i&0xf000)<<(9+8-4+8-4+8-4)),b=a;long long unsigned int t=a;for(int i=1;i<r-1;i++){for(int j=1;j<c-1;j++){int p=i*c+j,t=(i-1)*c+j,l=i*c+(j-1),b=(i+1)*c+j,r=i*c+(j+1),v=(t>>p)&1,u=(t>>t)&1,w=(t>>l)&1,x=(t>>b)&1,y=(t>>r)&1,z=u+w+x+y;if(z==0&&v==1){a&=~(1ULL<<p);}}} n+=(b==a);}return n;} |
Running the following program:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | int count(){int r=8,c=8,n=0;for(int i=0;i<1<<16;i++){long long unsigned int a=((i&0xf)<<9)|((i&0xf0)<<(9+8-4))|((i&0xf00)<<(9+8-4+8-4))|((i&0xf000)<<(9+8-4+8-4+8-4)),b=a;long long unsigned int t=a;for(int i=1;i<r-1;i++){for(int j=1;j<c-1;j++){int p=i*c+j,t=(i-1)*c+j,l=i*c+(j-1),b=(i+1)*c+j,r=i*c+(j+1),v=(t>>p)&1,u=(t>>t)&1,w=(t>>l)&1,x=(t>>b)&1,y=(t>>r)&1,z=u+w+x+y;if(z==0&&v==1){a&=~(1ULL<<p);}}} n+=(b==a);}return n;} #include<stdio.h> #include<stdlib.h> int main() { int answer = count(); int expected = 27488; if (answer != expected) { printf("Wrong answer; got %d instead of %d.\n", answer, expected); exit(1); } printf("All tests passed\n"); } |
Wrong answer; got 65536 instead of 27488.
Testing if the previous output contains the string All tests passed
: False
Resulting in output: False
Code golf this function to be a lot shorter. You only get points if it's <300 bytes (not counting whitespace). Keep the function named `count`.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | int count() { int ROWS = 8; int COLS = 8; int count = 0; for (int i = 0; i < 1<<16; i++) { long long unsigned int array = ((i & 0xf) << 9) | ((i & 0xf0) << (9 + 8 - 4)) | ((i & 0xf00) << (9 + 8 - 4 + 8 - 4)) | ((i & 0xf000) << (9 + 8 - 4 + 8 - 4 + 8 - 4)); long long unsigned int init = array; long long unsigned int temp = array; for (int i = 1; i < ROWS - 1; i++) { for (int j = 1; j < COLS - 1; j++) { // Calculate bit positions int pos = i * COLS + j; int topPos = (i - 1) * COLS + j; int leftPos = i * COLS + (j - 1); int bottomPos = (i + 1) * COLS + j; int rightPos = i * COLS + (j + 1); // Get the values of the neighbors int cell = (temp >> pos) & 1; int top = (temp >> topPos) & 1; int left = (temp >> leftPos) & 1; int bottom = (temp >> bottomPos) & 1; int right = (temp >> rightPos) & 1; // Sum the values of the neighbors int sum = top + left + bottom + right; // Update the cell if all neighbors are 0 and the cell itself is 1 if (sum == 0 && cell == 1) { array &= ~(1ULL << pos); } } } count += (init == array); } return count; } |
Code golf this function to be a lot shorter. You only get points if it's <300 bytes (not counting whitespace). Keep the function named `count`.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | int count() { int ROWS = 8; int COLS = 8; int count = 0; for (int i = 0; i < 1<<16; i++) { long long unsigned int array = ((i & 0xf) << 9) | ((i & 0xf0) << (9 + 8 - 4)) | ((i & 0xf00) << (9 + 8 - 4 + 8 - 4)) | ((i & 0xf000) << (9 + 8 - 4 + 8 - 4 + 8 - 4)); long long unsigned int init = array; long long unsigned int temp = array; for (int i = 1; i < ROWS - 1; i++) { for (int j = 1; j < COLS - 1; j++) { // Calculate bit positions int pos = i * COLS + j; int topPos = (i - 1) * COLS + j; int leftPos = i * COLS + (j - 1); int bottomPos = (i + 1) * COLS + j; int rightPos = i * COLS + (j + 1); // Get the values of the neighbors int cell = (temp >> pos) & 1; int top = (temp >> topPos) & 1; int left = (temp >> leftPos) & 1; int bottom = (temp >> bottomPos) & 1; int right = (temp >> rightPos) & 1; // Sum the values of the neighbors int sum = top + left + bottom + right; // Update the cell if all neighbors are 0 and the cell itself is 1 if (sum == 0 && cell == 1) { array &= ~(1ULL << pos); } } } count += (init == array); } return count; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | int count() { int R=8,C=8,c=0; for(int i=0;i<1<<16;i++){ long long unsigned int a=((i&0xf)<<9)|((i&0xf0)<<(9+8-4))|((i&0xf00)<<(9+8-4+8-4))|((i&0xf000)<<(9+8-4+8-4+8-4)); long long unsigned int I=a; long long unsigned int t=a; for(int i=1;i<R-1;i++) for(int j=1;j<C-1;j++){ int p=i*C+j,tp=(i-1)*C+j,lp=i*C+(j-1),bp=(i+1)*C+j,rp=i*C+(j+1),c=(t>>p)&1,top=(t>>tp)&1,l=(t>>lp)&1,b=(t>>bp)&1,r=(t>>rp)&1,s=top+l+b+r; if(s==0&&c==1) a&=~(1ULL<<p); } c+=(I==a); } return c; } |
I extracted the following code from that output:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | int count() { int R=8,C=8,c=0; for(int i=0;i<1<<16;i++){ long long unsigned int a=((i&0xf)<<9)|((i&0xf0)<<(9+8-4))|((i&0xf00)<<(9+8-4+8-4))|((i&0xf000)<<(9+8-4+8-4+8-4)); long long unsigned int I=a; long long unsigned int t=a; for(int i=1;i<R-1;i++) for(int j=1;j<C-1;j++){ int p=i*C+j,tp=(i-1)*C+j,lp=i*C+(j-1),bp=(i+1)*C+j,rp=i*C+(j+1),c=(t>>p)&1,top=(t>>tp)&1,l=(t>>lp)&1,b=(t>>bp)&1,r=(t>>rp)&1,s=top+l+b+r; if(s==0&&c==1) a&=~(1ULL<<p); } c+=(I==a); } return c; } |
Running the following program:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | int count() { int R=8,C=8,c=0; for(int i=0;i<1<<16;i++){ long long unsigned int a=((i&0xf)<<9)|((i&0xf0)<<(9+8-4))|((i&0xf00)<<(9+8-4+8-4))|((i&0xf000)<<(9+8-4+8-4+8-4)); long long unsigned int I=a; long long unsigned int t=a; for(int i=1;i<R-1;i++) for(int j=1;j<C-1;j++){ int p=i*C+j,tp=(i-1)*C+j,lp=i*C+(j-1),bp=(i+1)*C+j,rp=i*C+(j+1),c=(t>>p)&1,top=(t>>tp)&1,l=(t>>lp)&1,b=(t>>bp)&1,r=(t>>rp)&1,s=top+l+b+r; if(s==0&&c==1) a&=~(1ULL<<p); } c+=(I==a); } return c; } #include<stdio.h> #include<stdlib.h> int main() { int answer = count(); int expected = 27488; if (answer != expected) { printf("Wrong answer; got %d instead of %d.\n", answer, expected); exit(1); } printf("All tests passed\n"); } |
All tests passed
Testing if the previous output contains the string All tests passed
: True
Resulting in output: False
Code golf this function to be a lot shorter. You only get points if it's <300 bytes (not counting whitespace). Keep the function named `count`.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | int count() { int ROWS = 8; int COLS = 8; int count = 0; for (int i = 0; i < 1<<16; i++) { long long unsigned int array = ((i & 0xf) << 9) | ((i & 0xf0) << (9 + 8 - 4)) | ((i & 0xf00) << (9 + 8 - 4 + 8 - 4)) | ((i & 0xf000) << (9 + 8 - 4 + 8 - 4 + 8 - 4)); long long unsigned int init = array; long long unsigned int temp = array; for (int i = 1; i < ROWS - 1; i++) { for (int j = 1; j < COLS - 1; j++) { // Calculate bit positions int pos = i * COLS + j; int topPos = (i - 1) * COLS + j; int leftPos = i * COLS + (j - 1); int bottomPos = (i + 1) * COLS + j; int rightPos = i * COLS + (j + 1); // Get the values of the neighbors int cell = (temp >> pos) & 1; int top = (temp >> topPos) & 1; int left = (temp >> leftPos) & 1; int bottom = (temp >> bottomPos) & 1; int right = (temp >> rightPos) & 1; // Sum the values of the neighbors int sum = top + left + bottom + right; // Update the cell if all neighbors are 0 and the cell itself is 1 if (sum == 0 && cell == 1) { array &= ~(1ULL << pos); } } } count += (init == array); } return count; } |
Code golf this function to be a lot shorter. You only get points if it's <300 bytes (not counting whitespace). Keep the function named `count`.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | int count() { int ROWS = 8; int COLS = 8; int count = 0; for (int i = 0; i < 1<<16; i++) { long long unsigned int array = ((i & 0xf) << 9) | ((i & 0xf0) << (9 + 8 - 4)) | ((i & 0xf00) << (9 + 8 - 4 + 8 - 4)) | ((i & 0xf000) << (9 + 8 - 4 + 8 - 4 + 8 - 4)); long long unsigned int init = array; long long unsigned int temp = array; for (int i = 1; i < ROWS - 1; i++) { for (int j = 1; j < COLS - 1; j++) { // Calculate bit positions int pos = i * COLS + j; int topPos = (i - 1) * COLS + j; int leftPos = i * COLS + (j - 1); int bottomPos = (i + 1) * COLS + j; int rightPos = i * COLS + (j + 1); // Get the values of the neighbors int cell = (temp >> pos) & 1; int top = (temp >> topPos) & 1; int left = (temp >> leftPos) & 1; int bottom = (temp >> bottomPos) & 1; int right = (temp >> rightPos) & 1; // Sum the values of the neighbors int sum = top + left + bottom + right; // Update the cell if all neighbors are 0 and the cell itself is 1 if (sum == 0 && cell == 1) { array &= ~(1ULL << pos); } } } count += (init == array); } return count; } |
1 | int count(){int r=8,c=8,t=0;for(int i=0;i<1<<16;i++){long long unsigned int a=((i&0xf)<<9)|((i&0xf0)<<(9+8-4))|((i&0xf00)<<(9+8-4+8-4))|((i&0xf000)<<(9+8-4+8-4+8-4)),e=a;long long unsigned int b=a;for(int i=1;i<r-1;i++){for(int j=1;j<c-1;j++){int p=i*c+j,tp=(i-1)*c+j,lp=i*c+(j-1),bp=(i+1)*c+j,rp=i*c+(j+1),l=(b>>p)&1,tp=(b>>tp)&1,lf=(b>>lp)&1,bt=(b>>bp)&1,rt=(b>>rp)&1,s=l+lf+bt+rt;if(s==0&&l==1){a&=~(1ULL<<p);}}}t+=(e==a);}return t;} |
I extracted the following code from that output:
1 | int count(){int r=8,c=8,t=0;for(int i=0;i<1<<16;i++){long long unsigned int a=((i&0xf)<<9)|((i&0xf0)<<(9+8-4))|((i&0xf00)<<(9+8-4+8-4))|((i&0xf000)<<(9+8-4+8-4+8-4)),e=a;long long unsigned int b=a;for(int i=1;i<r-1;i++){for(int j=1;j<c-1;j++){int p=i*c+j,tp=(i-1)*c+j,lp=i*c+(j-1),bp=(i+1)*c+j,rp=i*c+(j+1),l=(b>>p)&1,tp=(b>>tp)&1,lf=(b>>lp)&1,bt=(b>>bp)&1,rt=(b>>rp)&1,s=l+lf+bt+rt;if(s==0&&l==1){a&=~(1ULL<<p);}}}t+=(e==a);}return t;} |
Running the following program:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | int count(){int r=8,c=8,t=0;for(int i=0;i<1<<16;i++){long long unsigned int a=((i&0xf)<<9)|((i&0xf0)<<(9+8-4))|((i&0xf00)<<(9+8-4+8-4))|((i&0xf000)<<(9+8-4+8-4+8-4)),e=a;long long unsigned int b=a;for(int i=1;i<r-1;i++){for(int j=1;j<c-1;j++){int p=i*c+j,tp=(i-1)*c+j,lp=i*c+(j-1),bp=(i+1)*c+j,rp=i*c+(j+1),l=(b>>p)&1,tp=(b>>tp)&1,lf=(b>>lp)&1,bt=(b>>bp)&1,rt=(b>>rp)&1,s=l+lf+bt+rt;if(s==0&&l==1){a&=~(1ULL<<p);}}}t+=(e==a);}return t;} #include<stdio.h> #include<stdlib.h> int main() { int answer = count(); int expected = 27488; if (answer != expected) { printf("Wrong answer; got %d instead of %d.\n", answer, expected); exit(1); } printf("All tests passed\n"); } |
main.c: In function 'count':
main.c:2:319: error: redefinition of 'tp'
2 | int count(){int r=8,c=8,t=0;for(int i=0;i<1<<16;i++){long long unsigned int a=((i&0xf)<<9)|((i&0xf0)<<(9+8-4))|((i&0xf00)<<(9+8-4+8-4))|((i&0xf000)<<(9+8-4+8-4+8-4)),e=a;long long unsigned int b=a;for(int i=1;i<r-1;i++){for(int j=1;j<c-1;j++){int p=i*c+j,tp=(i-1)*c+j,lp=i*c+(j-1),bp=(i+1)*c+j,rp=i*c+(j+1),l=(b>>p)&1,tp=(b>>tp)&1,lf=(b>>lp)&1,bt=(b>>bp)&1,rt=(b>>rp)&1,s=l+lf+bt+rt;if(s==0&&l==1){a&=~(1ULL<<p);}}}t+=(e==a);}return t;}
| ^~
main.c:2:256: note: previous definition of 'tp' with type 'int'
2 | int count(){int r=8,c=8,t=0;for(int i=0;i<1<<16;i++){long long unsigned int a=((i&0xf)<<9)|((i&0xf0)<<(9+8-4))|((i&0xf00)<<(9+8-4+8-4))|((i&0xf000)<<(9+8-4+8-4+8-4)),e=a;long long unsigned int b=a;for(int i=1;i<r-1;i++){for(int j=1;j<c-1;j++){int p=i*c+j,tp=(i-1)*c+j,lp=i*c+(j-1),bp=(i+1)*c+j,rp=i*c+(j+1),l=(b>>p)&1,tp=(b>>tp)&1,lf=(b>>lp)&1,bt=(b>>bp)&1,rt=(b>>rp)&1,s=l+lf+bt+rt;if(s==0&&l==1){a&=~(1ULL<<p);}}}t+=(e==a);}return t;}
| ^~
main.sh: line 2: ./a.out: No such file or directory
Testing if the previous output contains the string All tests passed
: False
Resulting in output: False
Code golf this function to be a lot shorter. You only get points if it's <300 bytes (not counting whitespace). Keep the function named `count`.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | int count() { int ROWS = 8; int COLS = 8; int count = 0; for (int i = 0; i < 1<<16; i++) { long long unsigned int array = ((i & 0xf) << 9) | ((i & 0xf0) << (9 + 8 - 4)) | ((i & 0xf00) << (9 + 8 - 4 + 8 - 4)) | ((i & 0xf000) << (9 + 8 - 4 + 8 - 4 + 8 - 4)); long long unsigned int init = array; long long unsigned int temp = array; for (int i = 1; i < ROWS - 1; i++) { for (int j = 1; j < COLS - 1; j++) { // Calculate bit positions int pos = i * COLS + j; int topPos = (i - 1) * COLS + j; int leftPos = i * COLS + (j - 1); int bottomPos = (i + 1) * COLS + j; int rightPos = i * COLS + (j + 1); // Get the values of the neighbors int cell = (temp >> pos) & 1; int top = (temp >> topPos) & 1; int left = (temp >> leftPos) & 1; int bottom = (temp >> bottomPos) & 1; int right = (temp >> rightPos) & 1; // Sum the values of the neighbors int sum = top + left + bottom + right; // Update the cell if all neighbors are 0 and the cell itself is 1 if (sum == 0 && cell == 1) { array &= ~(1ULL << pos); } } } count += (init == array); } return count; } |
Code golf this function to be a lot shorter. You only get points if it's <300 bytes (not counting whitespace). Keep the function named `count`.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | int count() { int ROWS = 8; int COLS = 8; int count = 0; for (int i = 0; i < 1<<16; i++) { long long unsigned int array = ((i & 0xf) << 9) | ((i & 0xf0) << (9 + 8 - 4)) | ((i & 0xf00) << (9 + 8 - 4 + 8 - 4)) | ((i & 0xf000) << (9 + 8 - 4 + 8 - 4 + 8 - 4)); long long unsigned int init = array; long long unsigned int temp = array; for (int i = 1; i < ROWS - 1; i++) { for (int j = 1; j < COLS - 1; j++) { // Calculate bit positions int pos = i * COLS + j; int topPos = (i - 1) * COLS + j; int leftPos = i * COLS + (j - 1); int bottomPos = (i + 1) * COLS + j; int rightPos = i * COLS + (j + 1); // Get the values of the neighbors int cell = (temp >> pos) & 1; int top = (temp >> topPos) & 1; int left = (temp >> leftPos) & 1; int bottom = (temp >> bottomPos) & 1; int right = (temp >> rightPos) & 1; // Sum the values of the neighbors int sum = top + left + bottom + right; // Update the cell if all neighbors are 0 and the cell itself is 1 if (sum == 0 && cell == 1) { array &= ~(1ULL << pos); } } } count += (init == array); } return count; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | int count() { int ROWS = 8, COLS = 8, count = 0; for (int i = 0; i < 1<<16; i++) { long long unsigned int array = ((i & 0xf) << 9) | ((i & 0xf0) << (9 + 8 - 4)) | ((i & 0xf00) << (9 + 8 - 4 + 8 - 4)) | ((i & 0xf000) << (9 + 8 - 4 + 8 - 4 + 8 - 4)), init = array; long long unsigned int temp = array; for (int i = 1; i < ROWS - 1; i++) { for (int j = 1; j < COLS - 1; j++) { int pos = i * COLS + j, topPos = (i - 1) * COLS + j, leftPos = i * COLS + (j - 1), bottomPos = (i + 1) * COLS + j, rightPos = i * COLS + (j + 1); int cell = (temp >> pos) & 1, top = (temp >> topPos) & 1, left = (temp >> leftPos) & 1, bottom = (temp >> bottomPos) & 1, right = (temp >> rightPos) & 1, sum = top + left + bottom + right; if (sum == 0 && cell == 1) { array &= ~(1ULL << pos); } } } count += (init == array); } return count; } |
I extracted the following code from that output:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | int count() { int ROWS = 8, COLS = 8, count = 0; for (int i = 0; i < 1<<16; i++) { long long unsigned int array = ((i & 0xf) << 9) | ((i & 0xf0) << (9 + 8 - 4)) | ((i & 0xf00) << (9 + 8 - 4 + 8 - 4)) | ((i & 0xf000) << (9 + 8 - 4 + 8 - 4 + 8 - 4)), init = array; long long unsigned int temp = array; for (int i = 1; i < ROWS - 1; i++) { for (int j = 1; j < COLS - 1; j++) { int pos = i * COLS + j, topPos = (i - 1) * COLS + j, leftPos = i * COLS + (j - 1), bottomPos = (i + 1) * COLS + j, rightPos = i * COLS + (j + 1); int cell = (temp >> pos) & 1, top = (temp >> topPos) & 1, left = (temp >> leftPos) & 1, bottom = (temp >> bottomPos) & 1, right = (temp >> rightPos) & 1, sum = top + left + bottom + right; if (sum == 0 && cell == 1) { array &= ~(1ULL << pos); } } } count += (init == array); } return count; } |
Running the following program:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | int count() { int ROWS = 8, COLS = 8, count = 0; for (int i = 0; i < 1<<16; i++) { long long unsigned int array = ((i & 0xf) << 9) | ((i & 0xf0) << (9 + 8 - 4)) | ((i & 0xf00) << (9 + 8 - 4 + 8 - 4)) | ((i & 0xf000) << (9 + 8 - 4 + 8 - 4 + 8 - 4)), init = array; long long unsigned int temp = array; for (int i = 1; i < ROWS - 1; i++) { for (int j = 1; j < COLS - 1; j++) { int pos = i * COLS + j, topPos = (i - 1) * COLS + j, leftPos = i * COLS + (j - 1), bottomPos = (i + 1) * COLS + j, rightPos = i * COLS + (j + 1); int cell = (temp >> pos) & 1, top = (temp >> topPos) & 1, left = (temp >> leftPos) & 1, bottom = (temp >> bottomPos) & 1, right = (temp >> rightPos) & 1, sum = top + left + bottom + right; if (sum == 0 && cell == 1) { array &= ~(1ULL << pos); } } } count += (init == array); } return count; } #include<stdio.h> #include<stdlib.h> int main() { int answer = count(); int expected = 27488; if (answer != expected) { printf("Wrong answer; got %d instead of %d.\n", answer, expected); exit(1); } printf("All tests passed\n"); } |
All tests passed
Testing if the previous output contains the string All tests passed
: True
Resulting in output: False