Re: is this c/10 spaceship known?
Posted: March 8th, 2016, 1:30 pm
Of course.Dave wrote:Would it be okay if I reposted your article on LifeNews?
Forums for Conway's Game of Life
https://conwaylife.com/forums/
Of course.Dave wrote:Would it be okay if I reposted your article on LifeNews?
It's actually been updated quite frequently, and includes information about the demonoids, waterbear, HBKs, 31c/240 ships, and other projects. They are all just edited into the same post, which has a timestamp from 2014 and a likely-outdated title/image. 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, but since I'm not the one who will do that I'll at least point people to the work that Dave has put in thus farmuzik 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, can you show the recipe using gfind on how to get this? I have been messing with gfind for hours, but only end up with about 3 ss/gliders that was discovered in pencil and paper days.velcrorex wrote: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.Scorbie wrote:Edit: How long did it take to find the ship?
The ship can be found by running gfind with the following parameters:Linicks wrote:can you show the recipe using gfind on how to get this?velcrorex wrote:I just ran this search in gfind and it refound the ship in a little over an hour.
Code: Select all
B3/S23/o10/n1/l100/v
I'm running a similar search using WLS, see if anything pops up overnightSokwe wrote:The ship can be found by running gfind with the following parameters.Linicks wrote:can you show the recipe using gfind on how to get this?velcrorex wrote:I just ran this search in gfind and it refound the ship in a little over an hour.
I support this as well. Until I saw biggiemac's post, I thought that ConwayLife.com gave up on updating.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,
Thanks to Nathaniel's cleverness, the conwaylife.com main page updates automatically, every time there's a new LifeNews posting, or every time Calcyman or I put something up on my b3s23life blog... the only thing that he didn't manage is an automatic article-writer. All of the old regular bloggers have been getting busier and busier in recent years -- and to be honest, we were all fairly irregular bloggers even in the best of times.FractalFusion wrote:I support this as well. Until I saw biggiemac's post, I thought that ConwayLife.com gave up on updating.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,
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.
Code: Select all
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!
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. To do it, just go to create the snippet at http://www.conwaylife.com/wiki/PAGENAME/Snippet (where PAGENAME is the name of the full wiki page) and make sure it follows the same format as a pre-existing snippet. For example, just copy the snippet from http://www.conwaylife.com/wiki/Block/Snippet and tweak it to whatever pattern you like.Kiran wrote:Somewhat irrelevant, but the wiki also keeps repeating the same featured articles over and over, we should write more snippets.
Again somewhat irrelevant, but that page is protected from editing. I want to change "outright the smallest" to "the outright smallest" to reflect the real page, but I can't do that. Can you fix that pleaseNathaniel wrote:just copy the snippet from http://www.conwaylife.com/wiki/Block/Snippet and tweak it to whatever pattern you like.
It looks like all 22 of the current snippets are editable by any logged-in user, except for whichever one is currently featured on the main page -- makes sense. And it shouldn't be a problem for anyone to create a new snippet for any other page; it just won't actually end up on the main page until Nathaniel adds it to the list.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.
Code: Select all
#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;
}
The Register tweeted about it. May well have been mentioned elsewhere yet, too.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.
Indeed; it was featured on hacker news.Apple Bottom wrote:May well have been mentioned elsewhere yet, too.
That was me - I e-mailed their 'news tip' address pointing to this thread.Apple Bottom wrote:The Register tweeted about it. May well have been mentioned elsewhere yet, too.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.
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.
Code: Select all
o....
oo...
.....
ooo..
oo...
.....
.oo..
.o.oo
.o...
.....
.....
o....
o....
147
500
418530519
142230000
done
418530519
142230000
What about WSS tagalongs? Like Coe ships or sidecars?codeholic wrote:There is probably a way to ignite a reaction with a glider or *WSS flotilla,