zfind discussion

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

Re: zfind discussion

Post by Sokwe » January 30th, 2017, 2:02 am

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

User avatar
Goldtiger997
Posts: 762
Joined: June 21st, 2016, 8:00 am

Re: zfind discussion

Post by Goldtiger997 » January 30th, 2017, 2:22 am

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: 2643
Joined: July 9th, 2009, 2:44 pm

Re: zfind discussion

Post by Sokwe » January 30th, 2017, 3:17 am

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: 2200
Joined: August 5th, 2016, 10:27 am
Location: 拆哪!I repeat, CHINA! (a.k.a. 种花家)
Contact:

Re: zfind discussion

Post by GUYTU6J » January 30th, 2017, 10:34 am

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?

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

Re: zfind discussion

Post by Sokwe » January 30th, 2017, 5:04 pm

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

Re: zfind discussion

Post by drc » February 4th, 2017, 10:37 pm

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.

User avatar
Saka
Posts: 3627
Joined: June 19th, 2015, 8:50 pm
Location: Indonesia
Contact:

Re: zfind discussion

Post by Saka » February 7th, 2017, 9:37 am

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

wildmyron
Posts: 1542
Joined: August 9th, 2013, 12:45 am
Location: Western Australia

Re: zfind discussion

Post by wildmyron » February 7th, 2017, 10:25 am

Saka wrote:Request:
A diagonal and knightship search feature for nt rules.
See here. Same limitations for diagonal and knightship searces as zfind.
The 5S project (Smallest Spaceships Supporting Specific Speeds) is now maintained by AforAmpere. The latest collection is hosted on GitHub and contains well over 1,000,000 spaceships.

Semi-active here - recovering from a severe case of LWTDS.

GUYTU6J
Posts: 2200
Joined: August 5th, 2016, 10:27 am
Location: 拆哪!I repeat, CHINA! (a.k.a. 种花家)
Contact:

Re: zfind discussion

Post by GUYTU6J » February 9th, 2017, 1:57 am

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?

wildmyron
Posts: 1542
Joined: August 9th, 2013, 12:45 am
Location: Western Australia

Re: zfind discussion

Post by wildmyron » February 9th, 2017, 2:34 am

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 5S project (Smallest Spaceships Supporting Specific Speeds) is now maintained by AforAmpere. The latest collection is hosted on GitHub and contains well over 1,000,000 spaceships.

Semi-active here - recovering from a severe case of LWTDS.

User avatar
praosylen
Posts: 2443
Joined: September 13th, 2014, 5:36 pm
Location: Pembina University, Home of the Gliders
Contact:

Re: zfind discussion

Post by praosylen » March 5th, 2017, 3:54 pm

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.
former username: A for Awesome
praosylen#5847 (Discord)

The only decision I made was made
of flowers, to jump universes to one of springtime in
a land of former winter, where no invisible walls stood,
or could stand for more than a few hours at most...

User avatar
Saka
Posts: 3627
Joined: June 19th, 2015, 8:50 pm
Location: Indonesia
Contact:

Re: zfind discussion

Post by Saka » March 6th, 2017, 3:27 am

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?

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

Re: zfind discussion

Post by Sphenocorona » March 10th, 2017, 8:56 pm

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?

User avatar
praosylen
Posts: 2443
Joined: September 13th, 2014, 5:36 pm
Location: Pembina University, Home of the Gliders
Contact:

Re: zfind discussion

Post by praosylen » March 10th, 2017, 9:53 pm

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.
former username: A for Awesome
praosylen#5847 (Discord)

The only decision I made was made
of flowers, to jump universes to one of springtime in
a land of former winter, where no invisible walls stood,
or could stand for more than a few hours at most...

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

Re: zfind discussion

Post by Sphenocorona » March 10th, 2017, 10:43 pm

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.

User avatar
praosylen
Posts: 2443
Joined: September 13th, 2014, 5:36 pm
Location: Pembina University, Home of the Gliders
Contact:

Re: zfind discussion

Post by praosylen » March 10th, 2017, 11:00 pm

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.
former username: A for Awesome
praosylen#5847 (Discord)

The only decision I made was made
of flowers, to jump universes to one of springtime in
a land of former winter, where no invisible walls stood,
or could stand for more than a few hours at most...

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

Re: zfind discussion

Post by Sokwe » March 11th, 2017, 1:44 am

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):
  • Lines 70-71 read

    Code: Select all

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

    Code: Select all

    uint64_t *gInd, *pInd;
    uint64_t *pRemain;
  • Line 211 reads

    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));
  • Lines 655-656 read

    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: 549
Joined: April 9th, 2013, 11:03 pm

Re: zfind discussion

Post by Sphenocorona » March 11th, 2017, 2:11 am

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: 2643
Joined: July 9th, 2009, 2:44 pm

Re: zfind discussion

Post by Sokwe » March 11th, 2017, 3:14 am

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

User avatar
muzik
Posts: 5612
Joined: January 28th, 2016, 2:47 pm
Location: Scotland

Re: zfind discussion

Post by muzik » June 15th, 2017, 4:00 pm

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!

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

Re: zfind discussion

Post by Sokwe » June 15th, 2017, 4:35 pm

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

User avatar
muzik
Posts: 5612
Joined: January 28th, 2016, 2:47 pm
Location: Scotland

Re: zfind discussion

Post by muzik » June 15th, 2017, 4:39 pm

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?

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

Re: zfind discussion

Post by Sokwe » June 15th, 2017, 5:47 pm

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

User avatar
muzik
Posts: 5612
Joined: January 28th, 2016, 2:47 pm
Location: Scotland

Re: zfind discussion

Post by muzik » June 15th, 2017, 5:49 pm

ah, right, I misread gfind as zfind.

drc
Posts: 1664
Joined: December 3rd, 2015, 4:11 pm

Re: zfind discussion

Post by drc » June 24th, 2017, 5:10 pm

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

Post Reply