I believe, there is no such a thread yet, but probably it makes sense to make one.
My particular question is why Bellman doesn't find the eater 3 with this input. (The pattern is a part of the rectifier.) Are search criteria too restrictive, or does Bellman simply not do exhaustive search within given criteria?
At its most active, 9 cells of the eater3 differ from its stable state. This happens twice: once when the loaf has been flipped over and is starting to interact with the pre-block, and again 2 generations later.
So max-active needs to be at least 9 to find an eater3.
One way to investigate questions like this is to tell it exactly what you want it to find. Here's an input file which fails to find the eater3, based on your search parameters but with a different pattern:
MikeP wrote:At its most active, 9 cells of the eater3 differ from its stable state. This happens twice: once when the loaf has been flipped over and is starting to interact with the pre-block, and again 2 generations later.
Thank you very much for the explanation. There has been misunderstanding on my side. I thought that "the number of cells in the catalyst which are permitted to differ from their stable state" refers only to live cells, and also I thought that it refers to the number of differing cells in all generations overall, not in every particular generation. Now it's much clear.
Mike, would it be much trouble to add an option to Bellman to run in symmetrical modes (similarly to JLS or gfind)? I wonder, if Bellman could find interesting perturbations of the pre-pulsar.
Yes, that ought to be doable. I think the easiest way to do this will be to modify bellman_choose_cells() to find the image(s) of the chosen point under the various symmetries and set them all at once before recursing.
Should it insist that the input pattern matches the symmetry constraints? Clearly the unknown '?' region should be symmetric, but what about the evolving pattern? This doesn't have to be symmetrical, but it might be confusing to allow this, and I'm not sure there's much use for it.
MikeP wrote:Clearly the unknown '?' region should be symmetric, but what about the evolving pattern? This doesn't have to be symmetrical, but it might be confusing to allow this, and I'm not sure there's much use for it.
I think it wouldn't be too confusing, but it would probably result in worse performance and more complicated code without clear benefits. So I would assume that the whole input pattern should be symmetrical, including '?' cells, '@' and catalysts.
What I think is important is to be able to specify odd- or even-symmetry for the input pattern.
codeholic wrote:I think it wouldn't be too confusing, but it would probably result in worse performance and more complicated code
Actually, with my proposed change it'll be about the same - Bellman will still evolve and validate the entire universe. Yes, it's doing redundant work, but then it does quite a bit of redundant work anyway by working with 64-bit wide tiles. The real benefit comes from restricting the search space.
Also I think that specifying filter patterns will be easier if they're allowed to be asymmetrical because the user won't have to worry about which region of the universe to put them in and/or how to flip and rotate them as appropriate.
The new "symmetry" parameter specifies the coordinate of the axis and the type (horiz-odd, horiz-even, vert-odd, vert-even). The PDF document explains it a bit more precisely (hopefully).
Actually I think your way to do it is correct on all platforms, because INT_MAX is defined by the C standard but MAXINT doesn't seem to be defined anywhere as far as I can see from a quick bit of Googling.
Sorry to wake up an old thread... Could anyone help me with filter options with bellman?
Mine doesn't work with this input file. It works when there's no filter.
EDIT: It does work when the ? cells are deleted in the filter pattern... Still, I didn't quite understand how the filter works.
The filter just checks that there is a certain pattern in a certain point of time on the board. Question marks are not allowed there, only whitespace (unknown or don't-care), dots (dead) and asterisks (alive).
codeholic wrote:The filter just checks that there is a certain pattern in a certain point of time on the board. Question marks are not allowed there, only whitespace (unknown or don't-care), dots (dead) and asterisks (alive).
This is a bug. '?'s in the filter are meant to work as Scorbie expects - but looking at the code, there's no way it can work! I'll fix this soon. Thanks Scorbie!
I've added a real time report for the mkstill - because sometimes I've wasted too much time on not interesting results waiting for mkstill to finish optimize something not important.
Use attached findstill.c (if we had github version I would make a pool request).
Now you can see the result in real-time, and stop mkstill (you can also test the pattern while mkstill continue to optimize).
---
Python script that converts golly state into bellman input.
Using the selection rectangle:
0->"."
1->"@"
2->"?"
import golly as g
rect = g.getselrect()
str = ""
for y in xrange(rect[1], rect[1] + rect[3] + 1):
for x in xrange(rect[0], rect[0] + rect[2] + 1):
if g.getcell(x, y) == 1:
str += "@"
if g.getcell(x, y) == 0:
str += "."
if g.getcell(x, y) == 2:
str += "?"
str += "\n"
g.setclipstr(str)
Just some questions:
1)In my computer, bellman crashes almost every pattern I feed in. It says something like:
Handle tile wrap: (10,8) something
What does it mean and what should I do?
2)There is this "envelope.exe" that's neither in the documentation nor looks like some test. What does it do?
Scorbie wrote:1)In my computer, bellman crashes almost every pattern I feed in. It says something like:
Handle tile wrap: (10,8) something
What does it mean and what should I do?
This question has been already answered.
MikeP wrote:Yes, it's a bug (or at least something that hasn't been implemented yet). I need to find some time to update it to fix this and a few other issues - at the time I thought it was more important to get it online so that others could try to use it. Sorry about that!
As codeholic points out, you can work around it for now by making sure there are no '?' cells at the edges of the pattern by adding a border of '.'s.
According to codeholic, MikeP wrote:As codeholic points out, you can work around it for now by making sure there are no '?' cells at the edges of the pattern by adding a border of '.'s.
Oh, I already wrapped the cells with "." cells with every input file and it still gives me errors.
Here's a typical input file of mine and it gave me this error after... um... about 10 minutes.
simsim314 wrote:But bellman reports all the solutions, into .out format.
I don't know for sure, because I didn't look into the source code, but my guess is that you need to specify all filters, if you want to filter results somehow (if you don't need a certain filter, you can still put it there just with an exaggerated number).