zfind discussion

For scripts to aid with computation or simulation in cellular automata.
Sokwe
Moderator
Posts: 1640
Joined: July 9th, 2009, 2:44 pm

Re: zfind discussion

Goldtiger997 wrote:How can zfind be modified so that when the depth limit is reached, it prints out the partial it already has as usual, but then continues the search for more spaceships?
It sounds like you want to use the 'm' command, which sets a max length for the search. Setting an 'm' value will cause the search to back up whenever the specified max length is reached. Note that the 'm' command should not be used if you are trying to prove that no spaceships exist at a certain width.
-Matthias Merzenich

Goldtiger997
Posts: 602
Joined: June 21st, 2016, 8:00 am

Re: zfind discussion

Sokwe wrote:
Goldtiger997 wrote:How can zfind be modified so that when the depth limit is reached, it prints out the partial it already has as usual, but then continues the search for more spaceships?
It sounds like you want to use the 'm' command, which sets a max length for the search. Setting an 'm' value will cause the search to back up whenever the specified max length is reached. Note that the 'm' command should not be used if you are trying to prove that no spaceships exist at a certain width.
Thanks, I tried it and it's close but not quite what I want. I was thinking of something that works just like the m parameter, but prints out what it has at the max length before backing up.

Sokwe
Moderator
Posts: 1640
Joined: July 9th, 2009, 2:44 pm

Re: zfind discussion

Goldtiger997 wrote:Thanks, I tried it and it's close but not quite what I want. I was thinking of something that works just like the m parameter, but prints out what it has at the max length before backing up.
In zfind 2.0, line 474 should read

Code: Select all

if(sp[P_MAX_LENGTH] && currRow > sp[P_MAX_LENGTH] + 2 * period - 1 && pRows[currRow] != 0) continue;
Replace this with

Code: Select all

if(sp[P_MAX_LENGTH] && currRow > sp[P_MAX_LENGTH] + 2 * period - 1 && pRows[currRow] != 0){
buffPattern(currRow);
printPattern();
continue;
}
-Matthias Merzenich

GUYTU6J
Posts: 1076
Joined: August 5th, 2016, 10:27 am
Location: 中国

Re: zfind discussion

wildmyron wrote: I think this is working as expected. You can see from the "Known spaceships by width" table at http://www.conwaylife.com/wiki/User:Codeholic/Sandbox that there is no even symmetric ship below width 18, so if you take a partial from a width 12 search (w6 in zfind) it is not surprising that there is no completion for it at widths up to 18 (w9 in zfind)
So does that mean that there will be an official width-extended zfind programme release sometime?

Code: Select all

x = 33, y = 19, rule = B3/S23
4b2o$4b2o8bobo11b2o$15b2o11bobo$15bo14bo$30b2o$15b2o10b2obo$14bo2bo8bo
bobobo$15bobo9bo3b2o$16bo4$3bob2o$b3ob2o13b2o$o19b2o$b3ob2o6b2o$3bobo 7b2o$3bobo$4bo! #C [[ PASTET 31 PASTE o$o! 15 -11 ]]

Sokwe
Moderator
Posts: 1640
Joined: July 9th, 2009, 2:44 pm

Re: zfind discussion

GUYTU6J wrote:So does that mean that there will be an official width-extended zfind programme release sometime?
I do not plan to do this any time soon. If someone else wants to make these modifications, they should feel free to do so.
-Matthias Merzenich

drc
Posts: 1664
Joined: December 3rd, 2015, 4:11 pm
Location: creating useless things in OCA

Re: zfind discussion

TIP: Pressing down after initiating a search gives you a little 'ding' and a flashing icon when it finishes (on windows at least). This is useful for longer searches.
\100\97\110\105

Saka
Posts: 3436
Joined: June 19th, 2015, 8:50 pm
Location: In the kingdom of Sultan Hamengkubuwono X
Contact:

Re: zfind discussion

Request:
A diagonal and knightship search feature for nt rules.
A "gfind" option, which searches from c/2 to c/7, u, v, g, then a up to a specified width, for example:

Code: Select all

./zfind g7
Will search for all c/2 to c/7 ships at symmetries u, v, g, and a (change speed if one is found at that symmetry) up to width 7.
A way to search for backends rather than frontends
k=0 searches

Code: Select all

o3b2ob2obo3b2o2b2o$bo3b2obob3o3bo2bo$2bo2b3o5b3ob4o$3o3bo2bo2b3o3b3o$
4bo4bobo4bo$2o2b2o2b4obo2bo3bo$2ob4o3bo2bo2bo2bo$b2o3bobob2o$3bobobo5b
obobobo$3bobobob2o3bo2bobo! (Check gen 3) Add your computer to the Table of Lifeenthusiast Computers! wildmyron Posts: 1402 Joined: August 9th, 2013, 12:45 am Re: zfind discussion Saka wrote:Request: A diagonal and knightship search feature for nt rules. See here. Same limitations for diagonal and knightship searces as zfind. The latest version of the 5S Project contains over 226,000 spaceships. There is also a GitHub mirror of the collection. Tabulated pages up to period 160 (out of date) are available on the LifeWiki. GUYTU6J Posts: 1076 Joined: August 5th, 2016, 10:27 am Location: 中国 Re: zfind discussion Sokwe wrote: GUYTU6J wrote:It's a pity that many partials in the middle of the output file is lost because my command prompt doesn't show enough. For long searches, you should redirect the output to a file. Is /d command designed for this case?If yes,where can I see those dump files?If no,how to save the outputs before they are gone in the command prompt? Code: Select all x = 33, y = 19, rule = B3/S23 4b2o$4b2o8bobo11b2o$15b2o11bobo$15bo14bo$30b2o$15b2o10b2obo$14bo2bo8bo bobobo$15bobo9bo3b2o$16bo4$3bob2o$b3ob2o13b2o$o19b2o$b3ob2o6b2o$3bobo
7b2o$3bobo$4bo!
#C [[ PASTET 31 PASTE o$o! 15 -11 ]] wildmyron Posts: 1402 Joined: August 9th, 2013, 12:45 am Re: zfind discussion GUYTU6J wrote: Sokwe wrote: GUYTU6J wrote:It's a pity that many partials in the middle of the output file is lost because my command prompt doesn't show enough. For long searches, you should redirect the output to a file. Is /d command designed for this case? If yes,where can I see those dump files? If no,how to save the outputs before they are gone in the command prompt? No, /d is not designed for this. Use redirection instead: Code: Select all zfind [options] > file.txt The output will be redirected to a file named 'file.txt' located in the current working directory. The dump files produced by the /d option will also be saved to the current working directory. One disadvantage of the redirection operator is that the output is no longer displayed on the screen. As you have MinGW installed you could use the 'tee' command provided by MinGW (may need to be installed). This will show the output on-screen and save it to file. Use a pipe ( '|' character) to send output from zfind to the tee command instead of redirection. Code: Select all zfind [options] | tee file.txt The latest version of the 5S Project contains over 226,000 spaceships. There is also a GitHub mirror of the collection. Tabulated pages up to period 160 (out of date) are available on the LifeWiki. A for awesome Posts: 2051 Joined: September 13th, 2014, 5:36 pm Location: 0x-1 Contact: Re: zfind discussion A minor note: zfind gives Code: Select all Abort trap: 6 and exits on my Mac when compiled with clang and extending a partial at width 10. Does not happen at width 9 or when not extending a partial. It occurred while trying to find loafer tagalongs. I recompiled using gcc and it works fine. x₁=ηx V ⃰_η=c²√(Λη) K=(Λu²)/2 Pₐ=1−1/(∫^∞_t₀(p(t)ˡ⁽ᵗ⁾)dt) $$x_1=\eta x$$ $$V^*_\eta=c^2\sqrt{\Lambda\eta}$$ $$K=\frac{\Lambda u^2}2$$ $$P_a=1-\frac1{\int^\infty_{t_0}p(t)^{l(t)}dt}$$ http://conwaylife.com/wiki/A_for_all Aidan F. Pierce Saka Posts: 3436 Joined: June 19th, 2015, 8:50 pm Location: In the kingdom of Sultan Hamengkubuwono X Contact: Re: zfind discussion A for awesome wrote:A minor note: zfind gives Code: Select all Abort trap: 6 and exits on my Mac when compiled with clang and extending a partial at width 10. Does not happen at width 9 or when not extending a partial. It occurred while trying to find loafer tagalongs. I recompiled using gcc and it works fine. Well, I guess zfind doesn't like trap music. What does that mean, anyway? Trap? Code: Select all o3b2ob2obo3b2o2b2o$bo3b2obob3o3bo2bo$2bo2b3o5b3ob4o$3o3bo2bo2b3o3b3o$4bo4bobo4bo$2o2b2o2b4obo2bo3bo$2ob4o3bo2bo2bo2bo$b2o3bobob2o$3bobobo5b obobobo$3bobobob2o3bo2bobo!
(Check gen 3)

Sphenocorona
Posts: 485
Joined: April 9th, 2013, 11:03 pm

Re: zfind discussion

Just a quick question - I had a few modifications I wanted to try implementing, but the comment on the MAX_WIDTH line makes me wonder - Aside from the assumption that there is enough memory (when there will almost definitely not be) to construct the required, are there any assumptions in the code about the maximum allowable width that will cause width 11 search attempts to error regardless of how much memory is actually available?

A for awesome
Posts: 2051
Joined: September 13th, 2014, 5:36 pm
Location: 0x-1
Contact:

Re: zfind discussion

Sphenocorona wrote:Just a quick question - I had a few modifications I wanted to try implementing, but the comment on the MAX_WIDTH line makes me wonder - Aside from the assumption that there is enough memory (when there will almost definitely not be) to construct the required, are there any assumptions in the code about the maximum allowable width that will cause width 11 search attempts to error regardless of how much memory is actually available?
I'm pretty sure it's because of the use of 32-bit integers in the lookup table to store the bits of three separate rows; with a width-11 search, this would take up 33 bits, unfortunately. I had wondered the same thing myself, as a hypothetical question about running a width-11 or 12 search hooked up to a couple hundred gigabytes of advanced memristor-based RAM analogue.
x₁=ηx
V ⃰_η=c²√(Λη)
K=(Λu²)/2
Pₐ=1−1/(∫^∞_t₀(p(t)ˡ⁽ᵗ⁾)dt)

$$x_1=\eta x$$
$$V^*_\eta=c^2\sqrt{\Lambda\eta}$$
$$K=\frac{\Lambda u^2}2$$
$$P_a=1-\frac1{\int^\infty_{t_0}p(t)^{l(t)}dt}$$

http://conwaylife.com/wiki/A_for_all

Aidan F. Pierce

Sphenocorona
Posts: 485
Joined: April 9th, 2013, 11:03 pm

Re: zfind discussion

Okay, good to know. I'm unfortunately still not sure how I'm going to implement the honestly fairly simple idea I had, since it will require rewriting the structure of the lookup table itself and the way the code is written makes it difficult for me to understand how it works well enough to recreate it with a mildly different structuring. For example, I don't fully understand why there are lookup tables returning three rows at a time rather than, say, just the result for the middle row. Understanding that might help me to figure out how to best implement the ideas I had in mind.

A for awesome
Posts: 2051
Joined: September 13th, 2014, 5:36 pm
Location: 0x-1
Contact:

Re: zfind discussion

Sphenocorona wrote:Okay, good to know. I'm unfortunately still not sure how I'm going to implement the honestly fairly simple idea I had, since it will require rewriting the structure of the lookup table itself and the way the code is written makes it difficult for me to understand how it works well enough to recreate it with a mildly different structuring. For example, I don't fully understand why there are lookup tables returning three rows at a time rather than, say, just the result for the middle row. Understanding that might help me to figure out how to best implement the ideas I had in mind.
I may not be remembering properly. All I remember is that there are multiple cases where a 32-bit integer has to store w*3 bits, which fails for w>10.
x₁=ηx
V ⃰_η=c²√(Λη)
K=(Λu²)/2
Pₐ=1−1/(∫^∞_t₀(p(t)ˡ⁽ᵗ⁾)dt)

$$x_1=\eta x$$
$$V^*_\eta=c^2\sqrt{\Lambda\eta}$$
$$K=\frac{\Lambda u^2}2$$
$$P_a=1-\frac1{\int^\infty_{t_0}p(t)^{l(t)}dt}$$

http://conwaylife.com/wiki/A_for_all

Aidan F. Pierce

Sokwe
Moderator
Posts: 1640
Joined: July 9th, 2009, 2:44 pm

Re: zfind discussion

A for awesome wrote:All I remember is that there are multiple cases where a 32-bit integer has to store w*3 bits, which fails for w>10.
This is correct. When zfind tries to find the next row in the spaceship sequence, it uses two tables: gInd and gRows. gInd takes as input three known rows from the current search state and outputs an index for the array gRows. gRows stores the rows which are viable extensions given the three rows input to gInd. The array gRows contains every row that can be achieved from evolving a stack of 3 rows while still staying within the specified width. For width n, this is 2^(3n)-2^(3n-3) rows, and when width=11 this is greater than 2^32. That is, when width>10, gRows has more than 2^32 entries, so the indices stored in gInd must be able to store values bigger than 32 bits.

If you have a machine with enough memory, you should be able to modify the program to work at width 11 by changing some of the malloc statements and declaring gInd and pInd as uint64_t* (and probably pRemain as well). Unfortunately, many of the malloc statements have the 32-bit assumption hard-coded. I think the following modifications for zfind 2.0 should be sufficient as long as you aren't using the dump state parameter (but you probably are if you're doing a width-11 search):

Code: Select all

uint32_t *gInd, *pInd;
uint32_t *pRemain;
Replace these with

Code: Select all

uint64_t *gInd, *pInd;
uint64_t *pRemain;

Code: Select all

gInd = malloc(((long long)4 << (width * 3)) + 4);
Replace with

Code: Select all

gInd = malloc(((long long)sizeof(*gInd) << (width * 3)) + sizeof(*gInd));

Code: Select all

pInd = malloc(sp[P_DEPTH_LIMIT] * 4);
pRemain = malloc(sp[P_DEPTH_LIMIT] * 4);
Replace these with

Code: Select all

pInd = malloc(sp[P_DEPTH_LIMIT] * sizeof(*pInd));
pRemain = malloc(sp[P_DEPTH_LIMIT] * sizeof(*pRemain));
The reason this doesn't work with dumpstate is that when the state is written to/read from the file, it writes/reads the pInd and pRemain values as 32-bit instead of 64-bit. This shouldn't be hard to fix. You probably just need to change the following lines:

407, 408, 596, 597, 603, and 604.

You will need to create a new function that loads larger (probably unsigned long long) integers to replace loadUL() in lines 603 and 604. I don't intend to do all this right now (I'm extremely busy marathoning Samurai Jack), but I will fix these issues the next time I update zfind.
-Matthias Merzenich

Sphenocorona
Posts: 485
Joined: April 9th, 2013, 11:03 pm

Re: zfind discussion

I'm curious about the way gInd and gRows are handled are utilized in particular, as some of the ideas I've got pertain to modifying them specifically. I had made a file with zfind-s source since I figured the lack of unnecessary code would help make it quicker and easier to implement changes to the core components.

Sokwe
Moderator
Posts: 1640
Joined: July 9th, 2009, 2:44 pm

Re: zfind discussion

I will reuse some of the language I used in an earlier post. I will use line numbers from zfind-s for reference.

zfind works similarly to gfind, so understanding gfind is helpful. zfind uses the ideas in sections 4 and 6 of David Eppstein's "Searching for Spaceships" article.

To find a new row, zfind takes 3 known rows, A, B, and Y, and looks for a row X so that evolve(A,B,X)=Y. That is,

Code: Select all

AAAAAAAA
BBBBBBBB   ->   YYYYYYYY
XXXXXXXX
It does this by using two lookup tables. The first table (gRows) actually gives the rows X that we are looking for (stored as unsigned 16-bit integers). The second table (gInd) gives indices into the first table (stored as unsigned 32-bit integers). The input for the second lookup table is the three rows A, B, and Y.

More precisely, let ABY be the bitwise concatenation of the integers representing rows A, B, and Y. Then gInd[ABY] gives the index in the array gRows of the first row X such that evolve(A,B,X)=Y. Now, any other row X' satisfying evolve(A,B,X')=Y has index gInd[ABY]+i in the array gRows, where gInd[ABY]+i < gInd[ABY+1]. That is, gRows[gInd[ABY]+i] gives a row X' such that evolve(A,B,X')=Y whenever gInd[ABY]+i < gInd[ABY+1] and i >= 0.

gInd and gRows are calculated inside the function makeTables(). Lines 145-152 (of zfind-s) are where the construction of gInd begins. The for loop runs through every combination of three rows, A, B, X and calculates Y:=evolve(A,B,X). It then increments gInd[ABY]. At the end of this loop, gInd[ABY] gives the number of rows X such that evolve(A,B,X)=Y.

The next for loop (line 154) simply replaces the original value of gInd[ABY] with the cumulative sum of the original gInd[n] values for all n <= ABY.

The last for loop (lines 157-164) constructs gRows and finishes the construction of gInd. It again loops through every combination of three rows, A, B, X and calculates Y:=evolve(A,B,X). The program then reduces gInd[ABY] by 1 and places the row X in the array gRows at index gInd[ABY] (that is, gRows[gInd[ABY]]:=X).

In the end, gInd[ABY] is the index in gRows of the first row X satisfying evolve(A,B,X)=Y.
-Matthias Merzenich

muzik
Posts: 3787
Joined: January 28th, 2016, 2:47 pm
Location: Scotland

Re: zfind discussion

Currently learning how to use zfind, here are some uninteresting c/2 partials. I cant go any higher than a width of 10 without a "Segmentation fault (core dumped)" error

Code: Select all

x = 84, y = 8, rule = B3/S23
6b2o20b2o16bo8bo13bo8bo$2bob2o2b2obo12bob2o2b2obo11b3ob4ob3o11b3ob4ob 3o$b2o8b2o10b2o8b2o9b2o3b4o3b2o9b2o3b4o3b2o$bobobo2bobobo9b2obobo2bobo b2o7b2o2bobo2bobo2b2o7b2o2bobo2bobo2b2o$3o3b2o3b3o7b2ob2ob4ob2ob2o7bo
3bo4bo3bo9bo3bo4bo3bo$43bobo10bobo7b2o12b2o$42bo3bo8bo3bo4b2obobo8bobo
b2o$64bo5b2o4b2o5bo! EDIT: Some other random stuff I found that is almost certaintly known: Code: Select all x = 474, y = 741, rule = B3/S23 398bo6bo$398bo6bo$397bobo4bobo2$352bo4bo$350b10o38bo6bo$350bo8bo37b3ob
2ob3o$353b4o40b3ob2ob3o$350b2o6b2o37bobo4bobo$349bobo6bobo38bo4bo$354b
2o42b2o4b2o$350b4o2b4o39bo4bo$350b3o4b3o38bo6bo$353bo2bo38b4o6b4o$349b
o3bo2bo3bo36bo8bo$349bo10bo34bobo3b2o3bobo$349b4o4b4o34bobo2bo2bo2bobo
$349bobo6bobo35b2o3b2o3b2o$348b2ob8ob2o$399b2o2b2o$397bo2bo2bo2bo25$354b2o$352bo4bo$352bo4bo$352bo4bo2$354b2o$353b4o$351b2o4b2o$352bo4bo$352bo4bo$353bo2bo$6b2o344b2o2b2o$4bo4bo340bob2o2b2obo$3bo6bo338bo3bo2b o3bo$2bo8bo336bo4bo2bo4bo$2b2ob4ob2o337bo2bo4bo2bo$349b2ob2o2b2ob2o$352b2o2b2o$4b2o2b2o$4b2o2b2o341b2o4b2o$350bo8bo$6b2o342bo8bo$5b4o340bo
2bo4bo2bo$4b2o2b2o340b4o2b4o$4bo4bo343bo2bo$6b2o343bo6bo$4bo4bo342b6o$4bo4bo339bobo6bobo$348bo2bobo2bobo2bo$4bo4bo339b5o2b5o$3bo6bo338bo4b2o
4bo105b2o$2bo8bo341bo2bo105b2obo2bob2o$2b2ob4ob2o450b2o6b2o$462bobo4bo bo$464b2o2b2o$4b2o2b2o453b2ob2ob2o$4b2o2b2o455bo2bo$463bo6bo$6b2o455bo
6bo$5b4o$4b2o2b2o453b8o$4bo4bo452b2o6b2o$6b2o$4bo4bo456b2o$4bo4bo455bo
2bo$466b2o$4bo4bo455b4o$3bo6bo450b2obo4bob2o$2bo8bo449b2o8b2o$2b2ob4ob 2o448bo2bo6bo2bo$465b4o$464b2o2b2o$4b2o2b2o455b4o$4b2o2b2o455bo2bo2$6b
2o458b2o$5b4o453bob2o2b2obo$4b2o2b2o451b2ob6ob2o$4bo4bo450bo2bobo2bobo 2bo$6b2o453bo3bo2bo3bo$4bo4bo455bo2bo$4bo4bo455b4o2$4bo4bo456b2o$3bo6b
o$2bo8bo453bo2bo$2b2ob4ob2o449b3ob4ob3o$460bo12bo$461b2o3b2o3b2o$4b2o 2b2o455b4o$4b2o2b2o454bo4bo2$6b2o457bo2bo$5b4o457b2o$4b2o2b2o455b4o$4b
o4bo451b2obo4bob2o$6b2o453b2o8b2o$4bo4bo450bo2bo6bo2bo$4bo4bo455b4o$
464b2o2b2o$4bo4bo455b4o$3bo6bo454bo2bo$2bo8bo$2b2ob4ob2o454b2o$462bob 2o2b2obo$461b2ob6ob2o$4b2o2b2o450bo2bobo2bobo2bo$4b2o2b2o451bo3bo2bo3b
o$465bo2bo$6b2o457b4o$5b4o$4b2o2b2o456b2o$4bo4bo$6b2o457bo2bo$4bo4bo 451b3ob4ob3o$4bo4bo450bo12bo$461b2o3b2o3b2o$4bo4bo455b4o$3bo6bo453bo4b o$2bo8bo$2b2ob4ob2o453bo2bo$466b2o$465b4o$4b2o2b2o451b2obo4bob2o$4b2o 2b2o451b2o8b2o$460bo2bo6bo2bo$6b2o457b4o$5b4o455b2o2b2o$4b2o2b2o455b4o$4bo4bo455bo2bo$6b2o$4bo4bo456b2o$4bo4bo452bob2o2b2obo$461b2ob6ob2o$4b o4bo450bo2bobo2bobo2bo$3bo6bo450bo3bo2bo3bo$2bo8bo453bo2bo$2b2ob4ob2o
453b4o2$466b2o$4b2o2b2o$4b2o2b2o455bo2bo$461b3ob4ob3o$6b2o452bo12bo$5b
4o452b2o3b2o3b2o$4b2o2b2o455b4o$4bo4bo454bo4bo$6b2o$4bo4bo455bo2bo$4bo 4bo456b2o$465b4o$4bo4bo451b2obo4bob2o$3bo6bo450b2o8b2o$2bo8bo448bo2bo 6bo2bo$2b2ob4ob2o453b4o$464b2o2b2o$465b4o$4b2o2b2o455bo2bo$4b2o2b2o$466b2o$6b2o454bob2o2b2obo$5b4o452b2ob6ob2o$4b2o2b2o450bo2bobo2bobo2bo$4bo4bo451bo3bo2bo3bo$6b2o457bo2bo$4bo4bo455b4o$4bo4bo$466b2o$4bo4bo$3b o6bo454bo2bo$2bo8bo449b3ob4ob3o$2b2ob4ob2o448bo12bo$461b2o3b2o3b2o$465b4o$4b2o2b2o454bo4bo$4b2o2b2o$465bo2bo$6b2o458b2o$5b4o456b4o$4b2o2b 2o451b2obo4bob2o$4bo4bo451b2o8b2o$6b2o452bo2bo6bo2bo$4bo4bo455b4o$4bo 4bo454b2o2b2o$465b4o$4bo4bo455bo2bo$3bo6bo$2bo8bo454b2o$2b2ob4ob2o450b
ob2o2b2obo$461b2ob6ob2o$460bo2bobo2bobo2bo$4b2o2b2o451bo3bo2bo3bo$4b2o
2b2o455bo2bo$465b4o$6b2o$5b4o457b2o$4b2o2b2o$4bo4bo455bo2bo$6b2o453b3o
b4ob3o$4bo4bo450bo12bo$4bo4bo451b2o3b2o3b2o$465b4o$4bo4bo454bo4bo$3bo 6bo$2bo8bo453bo2bo$2b2ob4ob2o454b2o$465b4o$461b2obo4bob2o$4b2o2b2o451b
2o8b2o$4b2o2b2o450bo2bo6bo2bo$465b4o$6b2o456b2o2b2o$5b4o456b4o$4b2o2b 2o455bo2bo$4bo4bo$6b2o458b2o$4bo4bo452bob2o2b2obo$4bo4bo451b2ob6ob2o$
460bo2bobo2bobo2bo$4bo4bo451bo3bo2bo3bo$3bo6bo454bo2bo$2bo8bo453b4o$2b
2ob4ob2o$466b2o2$4b2o2b2o455bo2bo$4b2o2b2o451b3ob4ob3o$460bo12bo$6b2o 453b2o3b2o3b2o$5b4o456b4o$4b2o2b2o454bo4bo$4bo4bo$6b2o457bo2bo$4bo4bo
456b2o$4bo4bo455b4o$461b2obo4bob2o$4bo4bo451b2o8b2o$3bo6bo449bo2bo6bo
2bo$2bo8bo453b4o$2b2ob4ob2o452b2o2b2o$465b4o$465bo2bo$4b2o2b2o$4b2o2b
2o456b2o$462bob2o2b2obo$6b2o453b2ob6ob2o$5b4o451bo2bobo2bobo2bo$4b2o2b
2o451bo3bo2bo3bo$4bo4bo455bo2bo$6b2o457b4o$4bo4bo$4bo4bo456b2o2$4bo4bo 455bo2bo$3bo6bo450b3ob4ob3o$2bo8bo448bo12bo$2b2ob4ob2o449b2o3b2o3b2o$465b4o$464bo4bo$4b2o2b2o$4b2o2b2o455bo2bo$466b2o$6b2o457b4o$5b4o452b2o bo4bob2o$4b2o2b2o451b2o8b2o$4bo4bo450bo2bo6bo2bo$6b2o457b4o$4bo4bo454b 2o2b2o$4bo4bo455b4o$465bo2bo$4bo4bo$3bo6bo455b2o$2bo8bo450bob2o2b2obo$2b2ob4ob2o449b2ob6ob2o$460bo2bobo2bobo2bo$461bo3bo2bo3bo$4b2o2b2o455bo
2bo$4b2o2b2o455b4o2$6b2o458b2o$5b4o$4b2o2b2o455bo2bo$4bo4bo451b3ob4ob 3o$6b2o452bo12bo$4bo4bo451b2o3b2o3b2o$4bo4bo455b4o$464bo4bo$4bo4bo$3bo 6bo454bo2bo$2bo8bo454b2o$2b2ob4ob2o453b4o$461b2obo4bob2o$461b2o8b2o$4b
2o2b2o450bo2bo6bo2bo$4b2o2b2o455b4o$464b2o2b2o$6b2o457b4o$5b4o456bo2bo
$4b2o2b2o$4bo4bo456b2o$6b2o454bob2o2b2obo$4bo4bo451b2ob6ob2o$4bo4bo 450bo2bobo2bobo2bo$461bo3bo2bo3bo$4bo4bo455bo2bo$3bo6bo454b4o$2bo8bo$
2b2ob4ob2o454b2o2$465bo2bo$4b2o2b2o451b3ob4ob3o$4b2o2b2o450bo12bo$461b
2o3b2o3b2o$6b2o457b4o$5b4o455bo4bo$4b2o2b2o$4bo4bo455bo2bo$6b2o458b2o$
4bo4bo455b4o$4bo4bo451b2obo4bob2o$461b2o8b2o$4bo4bo450bo2bo6bo2bo$3bo
6bo454b4o$2bo8bo452b2o2b2o$2b2ob4ob2o453b4o$465bo2bo2$4b2o2b2o456b2o$4b2o2b2o452bob2o2b2obo$461b2ob6ob2o$6b2o452bo2bobo2bobo2bo$5b4o452bo3b
o2bo3bo$4b2o2b2o455bo2bo$4bo4bo455b4o$6b2o$4bo4bo456b2o$4bo4bo$465bo2b
o$4bo4bo451b3ob4ob3o$3bo6bo449bo12bo$2bo8bo449b2o3b2o3b2o$2b2ob4ob2o
453b4o$464bo4bo2$4b2o2b2o455bo2bo$3bob4obo455b2o$3bo6bo454b4o$bo10bo 448b2obo4bob2o$o12bo447b2o8b2o$o12bo446bo2bo6bo2bo$2b2o6b2o453b4o$b3o 6b3o451b2o2b2o$2b2o6b2o453b4o$465bo2bo$bobo6bobo$2b3ob2ob3o454b2o$3bob
4obo451bob2o2b2obo$4b2o2b2o451b2ob6ob2o$3o3b2o3b3o446bo2bobo2bobo2bo$3o8b3o447bo3bo2bo3bo$2b2ob4ob2o453bo2bo$3bob4obo454b4o$b3ob4ob3o$6b2o 458b2o$4bo4bo$465bo2bo$461b3ob4ob3o$460bo12bo$461b2o3b2o3b2o$465b4o$
464bo4bo2$465bo2bo$466b2o$465b4o$461b2obo4bob2o$461b2o8b2o$460bo2bo6bo
2bo$465b4o$464b2o2b2o$465b4o$465bo2bo2$466b2o$462bob2o2b2obo$461b2ob6o b2o$460bo2bobo2bobo2bo$461bo3bo2bo3bo$465bo2bo$465b4o2$466b2o2$465bo2b o$461b3ob4ob3o$460bo12bo$461b2o3b2o3b2o$465b4o$464bo4bo2$465bo2bo$466b
2o$465b4o$461b2obo4bob2o$461b2o8b2o$460bo2bo6bo2bo$465b4o$464b2o2b2o$465b4o$465bo2bo2$466b2o$462bob2o2b2obo$461b2ob6ob2o$460bo2bobo2bobo2bo
$461bo3bo2bo3bo$465bo2bo$465b4o2$466b2o2$465bo2bo$461b3ob4ob3o$460bo 12bo$461b2o3b2o3b2o$465b4o$464bo4bo2$465bo2bo$466b2o$465b4o$461b2obo4b
ob2o$461b2o8b2o$460bo2bo6bo2bo$465b4o$464b2o2b2o$465b4o$465bo2bo2$466b 2o$462bob2o2b2obo$461b2ob6ob2o$460bo2bobo2bobo2bo$461bo3bo2bo3bo$465bo
2bo$465b4o2$466b2o2$465bo2bo$461b3ob4ob3o$460bo12bo$461b2o3b2o3b2o$465b4o$464bo4bo2$465bo2bo$466b2o$465b4o$461b2obo4bob2o$461b2o8b2o$460b
o2bo6bo2bo$465b4o$464b2o2b2o$465b4o$465bo2bo2$466b2o$462bob2o2b2obo$461b2ob6ob2o$460bo2bobo2bobo2bo$461bo3bo2bo3bo$465bo2bo$465b4o2$466b2o
2$465bo2bo$461b3ob4ob3o$460bo12bo$461b2o3b2o3b2o$465b4o$464bo4bo2$465b o2bo$466b2o$465b4o$461b2obo4bob2o$461b2o8b2o$460bo2bo6bo2bo$465b4o$
464b2o2b2o$465b4o$465bo2bo2$466b2o$462bob2o2b2obo$461b2ob6ob2o$460bo2b
obo2bobo2bo$461bo3bo2bo3bo$465bo2bo$465b4o2$466b2o2$465bo2bo$461b3ob4o
b3o$460bo12bo$461b2o3b2o3b2o$465b4o$464bo4bo2$465bo2bo$466b2o$465b4o$
461b2obo4bob2o$461b2o8b2o$460bo2bo6bo2bo$465b4o$464b2o2b2o$465b4o$465b
o2bo2$466b2o$462bob2o2b2obo$461b2ob6ob2o$460bo2bobo2bobo2bo$461bo3bo2b o3bo$465bo2bo$465b4o2$466b2o2$465bo2bo$461b3ob4ob3o$460bo12bo$461b2o3b
2o3b2o$465b4o$464bo4bo2$465bo2bo$466b2o$465b4o$461b2obo4bob2o$461b2o8b 2o$460bo2bo6bo2bo$465b4o$464b2o2b2o$465b4o$465bo2bo2$466b2o$462bob2o2b
2obo$461b2ob6ob2o$460bo2bobo2bobo2bo$461bo3bo2bo3bo$465bo2bo$465b4o2$
466b2o2$465bo2bo$461b3ob4ob3o$460bo12bo$461b2o3b2o3b2o$465b4o$464bo4bo
2$465bo2bo$466b2o$465b4o$461b2obo4bob2o$461b2o8b2o$460bo2bo6bo2bo$465b 4o$464b2o2b2o$465b4o$465bo2bo2$466b2o$462bob2o2b2obo$461b2ob6ob2o$460b
o2bobo2bobo2bo$461bo3bo2bo3bo$465bo2bo$465b4o2$466b2o2$465bo2bo$461b3o
b4ob3o$460bo12bo$461b2o3b2o3b2o$465b4o$464bo4bo2$465bo2bo$466b2o$465b 4o$461b2obo4bob2o$461b2o8b2o$460bo2bo6bo2bo$465b4o$464b2o2b2o$465b4o$
465bo2bo2$466b2o$462bob2o2b2obo$461b2ob6ob2o$460bo2bobo2bobo2bo$461bo 3bo2bo3bo$465bo2bo$465b4o2$466b2o2$465bo2bo$461b3ob4ob3o$460bo12bo$
461b2o3b2o3b2o$465b4o$464bo4bo2$465bo2bo$466b2o$465b4o$461b2obo4bob2o$461b2o8b2o$460bo2bo6bo2bo$465b4o$464b2o2b2o$465b4o$465bo2bo2$466b2o$
462bob2o2b2obo$461b2ob6ob2o$460bo2bobo2bobo2bo$461bo3bo2bo3bo$465bo2bo
$465b4o2$466b2o2$465bo2bo$461b3ob4ob3o$460bo12bo$461b2o3b2o3b2o$465b4o$464bo4bo2$465bo2bo$466b2o$465b4o$461b2obo4bob2o$461b2o8b2o$460bo2bo6b
o2bo$465b4o$464b2o2b2o$465b4o$465bo2bo2$466b2o$462bob2o2b2obo$461b2ob 6ob2o$460bo2bobo2bobo2bo$461bo3bo2bo3bo$465bo2bo$465b4o2$466b2o2$465bo 2bo$461b3ob4ob3o$460bo12bo$461b2o3b2o3b2o$465b4o$464bo4bo2$465bo2bo$
466b2o$465b4o$461b2obo4bob2o$461b2o8b2o$460bo2bo6bo2bo$465b4o$464b2o2b
2o$465b4o$465bo2bo2$466b2o$462bob2o2b2obo$461b2ob6ob2o$460bo2bobo2bobo
2bo$461bo3bo2bo3bo$465bo2bo$465b4o2$466b2o$462b3ob2ob3o$461bo3bo2bo3bo
$462bo2bo2bo2bo$466b2o$465bo2bo$461b2o3b2o3b2o$461b2ob2o2b2ob2o$460bo
3bob2obo3bo$464bo4bo$466b2o2$464b2o2b2o$463bob4obo$461bobo6bobo$460b2o
bobo2bobob2o$460b3ob2o2b2ob3o! Bored of using the Moore neighbourhood for everything? Introducing the Range-2 von Neumann isotropic non-totalistic rulespace! Sokwe Moderator Posts: 1640 Joined: July 9th, 2009, 2:44 pm Re: zfind discussion muzik wrote:I cant go any higher than a width of 10 without a "Segmentation fault (core dumped)" error There are multiple reasons why width 11 doesn't work. For now, zfind is restricted to width 10 or below. For this reason, zfind is not good for finding low-period ships. You should probably us gfind for periods below 5. -Matthias Merzenich muzik Posts: 3787 Joined: January 28th, 2016, 2:47 pm Location: Scotland Re: zfind discussion Sokwe wrote:zfind is not good for finding low-period ships. You should probably us gfind for periods below 5. I assume you mean periods higher than 5? Bored of using the Moore neighbourhood for everything? Introducing the Range-2 von Neumann isotropic non-totalistic rulespace! Sokwe Moderator Posts: 1640 Joined: July 9th, 2009, 2:44 pm Re: zfind discussion muzik wrote: Sokwe wrote:zfind is not good for finding low-period ships. You should probably us gfind for periods below 5. I assume you mean periods higher than 5? No, I mean that gfind should be used for periods lower than (and probably equal to) 5, and that zfind should be used for periods higher than 5. -Matthias Merzenich muzik Posts: 3787 Joined: January 28th, 2016, 2:47 pm Location: Scotland Re: zfind discussion ah, right, I misread gfind as zfind. Bored of using the Moore neighbourhood for everything? Introducing the Range-2 von Neumann isotropic non-totalistic rulespace! drc Posts: 1664 Joined: December 3rd, 2015, 4:11 pm Location: creating useless things in OCA Re: zfind discussion Okay, tried compiling this on my new computer, followed the same steps as before, but then this keeps happening: Code: Select all$ gcc ntzfind.c -O3 -o ntzfind
In file included from ntzfind.c:7:0:
step.c: In function ‘stepcell’:
step.c:2:264: error: expected expression before ‘)’ token
return (~o&((0x0)|(~(a^b^c^d^e^f^g^h)&(a|b|c|d|e|f|g|h)&~(((a|b|c)&(d|e|f)&(g|h))|(a&b&c)|(d&e&f)|((a|b|c)&(d|e|f)&(~(a^b^c)|~(d^e^f)))|(g&h&(a|b|c|d|e|f)))&~(~(a|c|e|g)&(b^f)))))|(o&((0x0)|(0x0|(~(a|c|e|g)&(b^f)&~(b^d^f^h))|(~(b|d|f|h)&~((a^e)|(c^g))&(a^c))|())));
^
Rule is B2-c/2cin
\100\97\110\105