Dave wrote:Would it be okay if I reposted your article on LifeNews?
Of course.
Dave wrote:Would it be okay if I reposted your article on LifeNews?
muzik wrote:Since it hasn't been updated since 2014, it might also be interesting to slide in other discoveries like the 31c/240 ships and the demonoids.
velcrorex wrote:Scorbie wrote:Edit: How long did it take to find the ship?
I just ran this search in gfind and it refound the ship in a little over an hour. It's really amazing this wasn't found sooner.
Linicks wrote:velcrorex wrote:I just ran this search in gfind and it refound the ship in a little over an hour.
can you show the recipe using gfind on how to get this?
B3/S23/o10/n1/l100/v
Sokwe wrote:Linicks wrote:velcrorex wrote:I just ran this search in gfind and it refound the ship in a little over an hour.
can you show the recipe using gfind on how to get this?
The ship can be found by running gfind with the following parameters.
biggiemac wrote:The option to "read the whole story" shows the lengthy list of accomplishments. An update that shows these additions more prominently would certainly be welcome,
FractalFusion wrote:biggiemac wrote:The option to "read the whole story" shows the lengthy list of accomplishments. An update that shows these additions more prominently would certainly be welcome,
I support this as well. Until I saw biggiemac's post, I thought that ConwayLife.com gave up on updating.
The thing I don't get is why someone thought that great discoveries like Demonoid/Geminoid-types, Waterbear, 31c/240 spaceships, HBK-type spaceships, and such don't deserve new standalone newsposts.
x = 24, y = 11, rule = LifeHistory
19.2A$2.4A13.2A$18.A2.A$2.A2.A11.2A2.2A$.A.2A.A12.2A$2.A2.A12.A2.A$3.
2A11.A6.A$8A8.A6.A$17.A4.A$19.2A$2.4A12.4A!
Kiran wrote:Somewhat irrelevant, but the wiki also keeps repeating the same featured articles over and over, we should write more snippets.
Nathaniel wrote:just copy the snippet from http://www.conwaylife.com/wiki/Block/Snippet and tweak it to whatever pattern you like.
Nathaniel wrote:If anyone wants to write more snippets, feel free to do so and then just message me and I'll insert them into the front page rotation.
#include <stdio.h>
#include <stdlib.h>
int sp[8], *gf, *gb, *gl, *gs;
int bc[8] = {0, 1, 1, 2, 1, 2, 2, 3};
void plong(long a){
if(a > 1000000000)printf("%dM\n", a / 1000000);
else printf("%d\n", a);
}
int u0_0(int a, int b, int c, int d){
int r;
r = bc[(a >> d) & 7];
r += bc[(b >> d) & 7] + 4 * ((b >> d) & 2);
r += bc[(c >> d) & 7];
return (sp[0] >> r) & 1;
}
void u0(){
int r[10];
gf = malloc((long)4 << (sp[1] * 3));
gb = malloc((long)8 << (sp[1] * 3));
for(r[0] = 0; r[0] < 1 << (3 * sp[1]); r[0]++)gb[2 * r[0]] = 0;
r[3] = -1;
r[9] = 0;
for(r[0] = 0; r[0] < 1 << sp[1]; r[0]++)for(r[1] = 0; r[1] < 1 << sp[1]; r[1]++)for(r[2] = 0; r[2] < 1 << sp[1]; r[2]++){
r[3]++;
if(u0_0(r[0], r[1], r[2], sp[1] - 1)){
gf[r[3]] = -1;
continue;
}
r[4] = (r[0] << 1) + ((r[0] >> sp[6]) & 1);
r[5] = (r[1] << 1) + ((r[1] >> sp[6]) & 1);
r[6] = (r[2] << 1) + ((r[2] >> sp[6]) & 1);
r[7] = u0_0(r[4], r[5], r[6], 0);
for(r[8] = 1; r[8] < sp[1]; r[8]++)r[7] += u0_0(r[0], r[1], r[2], r[8] - 1) << r[8];
gf[r[3]] = r[7];
gb[2 * (r[3] - r[2] + r[7])]++;
r[9]++;
}
gl = malloc(4 * r[9]);
r[1] = 0;
for(r[0] = 0; r[0] < 1 << (3 * sp[1]); r[0]++){
r[1] += gb[2 * r[0]];
gb[2 * r[0] + 1] = r[1];
}
r[3] = -1;
for(r[0] = 0; r[0] < (1 << (2 * sp[1])); r[0]++)for(r[1] = 0; r[1] < (1 << sp[1]); r[1]++){
r[3]++;
r[2] = gf[r[3]];
if(r[2] < 0)continue;
r[4] = r[3] - r[1] + r[2];
gb[2 * r[4] + 1]--;
gl[gb[2 * r[4] + 1]] = r[1];
}
free(gf);
}
void u1_0(int a){
int r[10];
for(r[2] = a - 1; r[2] >= 0; r[2]--)if(gs[4 * r[2] + 2])break;
for(r[0] = 2 * sp[2]; r[0] <= r[2]; r[0] += sp[2]){
for(r[1] = 0; r[1] < sp[1]; r[1]++){
if((gs[4 * r[0] + 2] >> r[1]) & 1)printf("o");
else printf(".");
}
printf("\n");
}
printf("%d\n", r[2]);
}
int u1_1(int a){
int r[30];
r[2] = (gs[4 * (a - sp[2] - sp[3]) + 2] << (2 * sp[1])) + (gs[4 * (a - sp[3]) + 2] << sp[1]);
r[3] = gb[2 * (r[2] + gs[4 * a + 2])];
if(!r[3])return 0;
r[1] = gb[2 * (r[2] + gs[4 * a + 2]) + 1];
r[2] = (gs[4 * (a - sp[2] - 2 * sp[3]) + 2] << (2 * sp[1])) + (gs[4 * (a - 2 * sp[3]) + 2] << sp[1]);
r[6] = gb[2 * (r[2] + gs[4 * (a - sp[3]) + 2])];
r[7] = gb[2 * (r[2] + gs[4 * (a - sp[3]) + 2]) + 1];
r[2] = (gs[4 * (a - sp[2] - 3 * sp[3]) + 2] << (2 * sp[1])) + (gs[4 * (a - 3 * sp[3]) + 2] << sp[1]);
r[10] = gb[2 * (r[2] + gs[4 * (a - 2 * sp[3]) + 2])];
r[11] = gb[2 * (r[2] + gs[4 * (a - 2 * sp[3]) + 2]) + 1];
for(r[0] = 0; r[0] < r[3]; r[0]++){
r[4] = gl[r[1] + r[0]];
for(r[5] = 0; r[5] < r[6]; r[5]++){
r[8] = gl[r[7] + r[5]];
r[9] = (gs[4 * (a - 2 * sp[3]) + 2] << (2 * sp[1])) + (r[8] << sp[1]) + r[4];
if(!gb[2 * r[9]])continue;
r[15] = gb[2 * r[9]];
r[16] = gb[2 * r[9] + 1];
for(r[12] = 0; r[12] < r[10]; r[12]++){
r[13] = gl[r[11] + r[12]];
r[14] = (gs[4 * (a - 3 * sp[3]) + 2] << (2 * sp[1])) + (r[13] << sp[1]) + r[8];
if(!gb[2 * r[14]])continue;
r[17] = gb[2 * r[14]];
r[18] = gb[2 * r[14] + 1];
for(r[19] = 0; r[19] < r[15]; r[19]++){
r[20] = gl[r[16] + r[19]];
for(r[21] = 0; r[21] < r[17]; r[21]++){
r[22] = gl[r[18] + r[21]];
r[23] = (r[13] << (2 * sp[1])) + (r[22] << sp[1]) + r[20];
if(gb[2 * r[23]])return 1;
}
}
}
}
}
return 0;
}
void u1(){
int r[10];
long i;
gs = malloc(40000);
r[0] = 2 * sp[2];
for(r[1] = 0; r[1] < r[0]; r[1]++)gs[4 * r[1] + 2] = 0;
gs[4 * r[0]] = gb[0] - 1;
gs[4 * r[0] + 1] = gb[1];
i = 0;
r[5] = 0;
time_t ms = clock();
for(;;){
i++;
if(r[0] > r[5] || !(i & 0xffffffff)){
u1_0(r[0]);
printf("%d\n", r[0]);
plong(i);
plong(clock() - ms);
if(r[0] > r[5])r[5] = r[0];
}
if(!gs[4 * r[0]]){
r[0]--;
if(r[0] < 2 * sp[2]){
printf("end\n");
plong(i);
return;
}
continue;
}
gs[4 * r[0]]--;
gs[4 * r[0] + 2] = gl[gs[4 * r[0] + 1] + gs[4 * r[0]]];
if(!u1_1(r[0]))continue;
r[0]++;
if(r[0] > sp[4]){
printf("done\n");
plong(i);
return;
}
r[4] = (gs[4 * (r[0] - 2 * sp[2]) + 2] << (2 * sp[1])) + (gs[4 * (r[0] - sp[2]) + 2] << sp[1]) + gs[4 * (r[0] - sp[2] + sp[3]) + 2];
gs[4 * r[0]] = gb[2 * r[4]];
gs[4 * r[0] + 1] = gb[2 * r[4] + 1];
}
}
int main(int argc, char *argv[]){
int r[10];
sp[0] = 6152;
sp[1] = 6;
sp[2] = 3;
sp[3] = 1;
sp[4] = 500;
sp[5] = 1;
sp[6] = 0;
sp[7] = 1;
for(r[0] = 1; r[0] < argc; r[0]++){
switch(argv[r[0]][0]){
case 'b':
sp[0] = 0;
r[1] = 0;
for(r[2] = 1; r[2] < 100; r[2]++){
r[3] = argv[r[0]][r[2]];
if(!r[3])break;
if(r[3] == 's')r[1] = 9;
if(r[3] >= '0' && r[3] <= '8')sp[0] += 1 << (r[1] + r[3] - '0');
}
break;
case 'w': sscanf(&argv[r[0]][1], "%d", &sp[1]); break;
case 'p': sscanf(&argv[r[0]][1], "%d", &sp[2]); break;
case 'k': sscanf(&argv[r[0]][1], "%d", &sp[3]); break;
case 'l': sscanf(&argv[r[0]][1], "%d", &sp[4]); break;
case 'u': sp[6] = 1; break;
case 'v': sp[6] = 0; break;
}
}
time_t ms = clock();
u0();
plong(clock() - ms);
ms = clock();
u1();
plong(clock() - ms);
return 0;
}
zdr wrote:It looks like this thread was linked from somewhere, since it now has over 40k views. If anyone is interested in how simple it was to find this spaceship run the following c code with arguments:
b3s23 w5 p10 k1 v
This was the exact program used to find it.
Apple Bottom wrote:May well have been mentioned elsewhere yet, too.
Apple Bottom wrote:zdr wrote:It looks like this thread was linked from somewhere, since it now has over 40k views. If anyone is interested in how simple it was to find this spaceship run the following c code with arguments:
b3s23 w5 p10 k1 v
This was the exact program used to find it.
The Register tweeted about it. May well have been mentioned elsewhere yet, too.
Thanks for sharing your code!
zdr wrote:It looks like this thread was linked from somewhere, since it now has over 40k views. If anyone is interested in how simple it was to find this spaceship run the following c code with arguments:
b3s23 w5 p10 k1 v
This was the exact program used to find it.
o....
oo...
.....
ooo..
oo...
.....
.oo..
.o.oo
.o...
.....
.....
o....
o....
147
500
418530519
142230000
done
418530519
142230000
codeholic wrote:There is probably a way to ignite a reaction with a glider or *WSS flotilla,
Users browsing this forum: Sokwe and 5 guests