Sokwe wrote: ↑January 13th, 2020, 1:17 am
Bullet51 wrote: ↑January 13th, 2020, 12:04 am
p4 partial
I assume you mean that it's a partial with strict volatility equal to 1. How did you find it?
I believe it's the time to publicize my tools.
It's just hacked lifesrc 3.8, namely, add these lines at the beginning of the consistify10 function (line 705 in search.c):
Code: Select all
static Status
consistify10(Cell * cell)
{
//add these lines
State st0 = findCell(cell->row, cell->col, 0) -> state;
State st1 = findCell(cell->row, cell->col, 1) -> state;
State st2 = findCell(cell->row, cell->col, 2) -> state;
State st3 = findCell(cell->row, cell->col, 3) -> state; //Get the states of a cell. Possibly inefficient
if (st0 == ON && st1 == OFF && st2 == ON && st3 == OFF) //this cell oscillates in period 2
return ERROR;
if (st0 == OFF && st1 == ON && st2 == OFF && st3 == ON ) //this cell oscillates in period 2
return ERROR;
if (st0 == ON && st1 == ON && st2 == ON && st3 == ON) //this cell is stable
return ERROR;
//end of hack
My searches are conducted in terms of width, the same notion of that in gfind. The following returned negative results:
- asymmetric width 13 (-a in gfind)
- odd width 21 (-u in gfind)
- even width 22 (-v in gfind)
- gutter width 23 (-w in gfind)
The longest partial I've obtained is in asymmetric width 13:
Code: Select all
x = 30, y = 13, rule = B3/S23
3bo13bobo$3b2o13bo$bo11b3o2b3o$o3bo5bo2b2o2bo2bo$bobobobobobo4b2o$6bo
9b2o2bo$bobobobob2o4bobo$o3bo5bo5bo2b2o$bo9b4o2b2o$3b2o7bobobobobo$3bo
15bo$19b2o!
I've also tried odd width 23 and even width 24.
Assume the search space is an mxn rectangle, where m=23 (for odd) or m=24 (for even). In lifesrc, the commands are
or
.
A "x 1 31 m 36" command in the runtime is used to make sure that negative results returned from the program are reliable.
The searches are organized in a way featuring symmetry breaking: consider the highest cell which is alive in some generation in the first column. There're only three possibilities of the cell up to time-shifting: alive in 3 generations, alive in 2 generations and alive in 1 generation. So I divided the search space according to where is the highest cell and how it oscillates. This picks out one element out of four in each isomorphism class(two patterns are in the same isomorphism class if one if a time-shift of the other).
The finished partial results are as following. All results are negative.
Code: Select all
23 ODD RESULTS
FIRST ALIVE CELL AT (1,1) NEGATIVE
FIRST ALIVE CELL AT (2,1) NEGATIVE
FIRST ALIVE CELL AT (3,1) NEGATIVE
FIRST ALIVE CELL AT (4,1) NEGATIVE IF ALIVE IN 1 GENERATION OR 3 GENERATIONS
FIRST ALIVE CELL AT (9,1) NEGATIVE
FIRST ALIVE CELL AT (10,1) NEGATIVE
FIRST ALIVE CELL AT (11,1) NEGATIVE
FIRST ALIVE CELL AT (12,1) NEGATIVE
OTHERS UNKNOWN
Code: Select all
24 EVEN RESULTS
FIRST ALIVE CELL AT (4,1) NEGATIVE IF ALIVE IN 2 GENERATIONS
FIRST ALIVE CELL AT (7,1) NEGATIVE IF ALIVE IN 2 GENERATIONS
FIRST ALIVE CELL AT (11,1) NEGATIVE
FIRST ALIVE CELL AT (12,1) NEGATIVE
The partition of the search space made it particularly suitable for distributed hunting, like Sokwe's width 19 c/8 spaceship search.
I've not tried glide symmetry (-g in gfind) and diagonal symmetries.
- lifesrc-3.8.zip
- Contains the executable of the hacked program
- (1.15 MiB) Downloaded 404 times
Still drifting.