Bellman

For scripts to aid with computation or simulation in cellular automata.
User avatar
dvgrn
Moderator
Posts: 10612
Joined: May 17th, 2009, 11:00 pm
Location: Madison, WI
Contact:

Re: Bellman

Post by dvgrn » December 1st, 2018, 10:02 am

Entity Valkyrie wrote:
Entity Valkyrie wrote:But I still can't use bellman!!!
WHY DID NOBODY REPLY ME???
Please don't yell. Nobody replied because you didn't ask any questions, and didn't provide any information. That's your half of the work, and if you don't do it, nobody else is likely to do their half either.

Try to be as clear and specific as you can in answering Rhombic's question, and you're likely to get much better results.

User avatar
Entity Valkyrie
Posts: 247
Joined: November 30th, 2017, 3:30 am

Re: Bellman

Post by Entity Valkyrie » December 2nd, 2018, 5:50 am

dvgrn wrote:
Entity Valkyrie wrote:
Entity Valkyrie wrote:But I still can't use bellman!!!
WHY DID NOBODY REPLY ME???
No need to yell. Nobody replied because you didn't ask any questions, and didn't provide any information. That's your half of the work, and if you don't do it, nobody else is likely to do their half either.

Try to be as clear and specific as you can in answering Rhombic's question, and you're likely to get much better results.
I tried to use bellman, but it crashed/auto-shut immediately after I opened it. Can anyone fix this problem?

User avatar
dvgrn
Moderator
Posts: 10612
Joined: May 17th, 2009, 11:00 pm
Location: Madison, WI
Contact:

Re: Bellman

Post by dvgrn » December 2nd, 2018, 7:25 am

Entity Valkyrie wrote:
dvgrn wrote:Try to be as clear and specific as you can in answering Rhombic's question, and you're likely to get much better results.
I tried to use bellman, but it crashed/auto-shut immediately after I opened it. Can anyone fix this problem?
Probably not. Unfortunately you still haven't provided any actual useful details.

When you say "Bellman", nobody except for you knows what that means. There are several ZIP files you could have downloaded with different versions of Bellman, with or without executable files.

In general, when you're asking for this kind of help, start by mentioning your operating system, and the exact name of the files you downloaded, with the link where you downloaded them. If you don't walk a potential helper through every single one of the exact steps that you took to get to your problem, then nobody can duplicate the problem, and that means that no one can help you.

Possibilities
If you're just trying to run someone else's pre-compiled Windows executable instead of compiling the program yourself, there are two possibilities at least:

1) If you don't know how to use a Cygwin command line, and if instead of reading and following the instructions, you're just double-clicking Bellman.exe and hoping... you would probably get behavior more or less like what you're describing. Is that what you're doing? Again, please be painfully detailed and specific about each individual step that you're attempting.

2) If you're calling a precompiled Bellman.exe correctly from a command line, by typing something like

Code: Select all

time ./bellman inputs/test.in
and if it's crashing immediately in that context, then you should probably give up on that executable. Maybe you could try running in some Windows compatibility mode, but you'd be on your own experimenting with that -- I don't think it's likely to work. Precompiled executables are great when they work, but hopeless if your hardware or operating system is incompatible with the hardware used to do the compiling.

For example, if you're trying to run, in Windows, the Linux executable provided with simeks' fork of BellmanWin... that seems very unlikely to work out well for you. But until you explain specifically what you're doing, no one will be able to guess if that's your problem.

Cygwin Is A Good Place To Start
On Windows, it's probably better in general to start by installing Cygwin, getting your code from a repository like the one linked above, and learning how to compile it. Git and gcc (and Cygwin) take some getting used to, for sure. Maybe start with something simple like apgsearch, if you haven't done that already. The instructions are all in the README. If you can get that working, then maybe it will make sense to try compiling Bellman using the same tools.
Rhombic wrote:Can you say what you have done and what error appears?
Go on cygwin, move to the folder with your Bellman and do this:

Code: Select all

gcc bellman.c bitwise.h evolve_bitwise.c evolve_simple.c lib.c lib.h readfile.c readwrite.h textconv.c universe.c universe.h writefile.c -o bellman;
gcc evolve_bitwise.c evolve_simple.c findstill.c lib.c lib.h mkstill.c readfile.c readwrite.h textconv.c universe.c universe.h writefile.c -o mkstill
After that, just to be absolutely clear, you should end up with new "bellman" and "mkstill" executables that you didn't have before.

If you're still having problems, then whatever text appears on the screen after you try the above, you should copy and paste it to a message here, and mention anything else you saw or did along the way that might be relevant.

User avatar
Rhombic
Posts: 1072
Joined: June 1st, 2013, 5:41 pm

Re: Bellman

Post by Rhombic » December 3rd, 2018, 2:48 pm

simeks wrote:
Rhombic wrote: I have marked all additions with " // CXI " and the part that I need help with with "HELP".
I made an attempt with this. It isn't very efficient, but I think it might work.
Would you do some tests and check if it does what you expect it to do?

Note: on line 791 I changed
if((first_active_gen > 0) && (ge->gen > first_active_gen + inhabit_gen)) { //CXI
to
if((first_active_gen > 0) && (ge->gen >= inhabit_gen)) { //CXI

I think that is what you meant, but I'm not sure...
I am not entirely sure how to use it, let's say I had the following case where the bounding box with two padded cells would represent the Bellman input [x+2,y+2]:

Code: Select all

x = 21, y = 18, rule = LifeHistory
$5.2A$6.2A7.5D$7.2A6.5D$15.5D$15.5D$15.5D$.19B$.19B$.19B$.19B$.19B$.
19B$.19B$.19B$.19B$.19B!
It doesn't matter that it would need more empty rows on the top, just bear with me.

State 2 is where you want the catalyst to be.
State 4 is the area where you want between inhabit_min and inhabit_max cells alive in generation inhabit_gen.

Actually, it would probably be easier if we did it with states like this instead of by defining the bounding rectangle in the parameters.

In any case, the parameters in this case would be inhabit-x = 16, inhabit-y = 2, inhabit-wx = 4, inhabit-wy = 4.
At generation inhabit-gen, it checks that the population of that rectangle (or the total live cells within the specified cells) is between inhabit-min and inhabit-max.
SoL : FreeElectronics : DeadlyEnemies : 6a-ite : Rule X3VI
what is “sesame oil”?

simeks
Posts: 402
Joined: March 11th, 2015, 12:03 pm
Location: Sweden

Re: Bellman

Post by simeks » December 3rd, 2018, 6:06 pm

Rhombic wrote:I am not entirely sure how to use it, let's say I had the following case where the bounding box with two padded cells would represent the Bellman input [x+2,y+2]:
Actually it's a good tip to always try to keep the evolving pattern within the first tile, which is 0-63 in both directions. If a pattern evolves into a neighbouring tile it slows the search down a lot.

If I move your example to the center of the first tile it would be like this, where I put a white cell to just to indicate the [0, 0] cell:

Code: Select all

x = 45, y = 47, rule = LifeHistory
C31$30.2A$31.2A7.5D$32.2A6.5D$40.5D$40.5D$40.5D$26.19B$26.19B$26.19B$
26.19B$26.19B$26.19B$26.19B$26.19B$26.19B$26.19B!
That would mean inhabit-x = 40, inhabit-y = 32
I took inhabit-wx and inhabit-wy to mean width, so they should be 5, not 4.

Also, as written now, the population in the inhabit square will be checked at every generation, starting at inhabit-gen. If that's not how you wanted it, just change >= to == on line 791 (double equal sign).

User avatar
Rhombic
Posts: 1072
Joined: June 1st, 2013, 5:41 pm

Re: Bellman

Post by Rhombic » December 5th, 2018, 9:23 am

simeks wrote:
Rhombic wrote:I am not entirely sure how to use it, let's say I had the following case where the bounding box with two padded cells would represent the Bellman input [x+2,y+2]:
Actually it's a good tip to always try to keep the evolving pattern within the first tile, which is 0-63 in both directions. If a pattern evolves into a neighbouring tile it slows the search down a lot.

If I move your example to the center of the first tile it would be like this, where I put a white cell to just to indicate the [0, 0] cell:

Code: Select all

x = 45, y = 47, rule = LifeHistory
C31$30.2A$31.2A7.5D$32.2A6.5D$40.5D$40.5D$40.5D$26.19B$26.19B$26.19B$
26.19B$26.19B$26.19B$26.19B$26.19B$26.19B$26.19B!
That would mean inhabit-x = 40, inhabit-y = 32
I took inhabit-wx and inhabit-wy to mean width, so they should be 5, not 4.

Also, as written now, the population in the inhabit square will be checked at every generation, starting at inhabit-gen. If that's not how you wanted it, just change >= to == on line 791 (double equal sign).
I see! Very useful. However, Why does it give this as a valid result?

Code: Select all

#S first-encounter 1
#S last-encounter 80
#S repair-interval 20
#S inhabit-x 35
#S inhabit-y 2
#S inhabit-gen 35
#S inhabit-wx 22
#S inhabit-wy 43
#S inhabit-min 1
#S inhabit-max 100
#S stable-interval 10
#S max-live 60
#S max-active 8
#P 0 0
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
.............@.@................................................
................@...............................................
................@...............................................
.............@..@...............................................
..............@@@...............................................
................................................................
................................................................
................................................................
..............**................................................
........?.**..**..*????.........................................
.......??*.*.......??????.......................................
.......??*.....????????????.....................................
.......???....??????????????....................................
.......???????????????????????..................................
.......????????????????????????.................................
.......?????????????????????????................................
.......?????????????????????????................................
.......?????????????????????????................................
........?????????????????????????...............................
........?????????????????????????...............................
.........????????????????????????...............................
.........????????????????????????...............................
..........???????????????????????...............................
..........???????????????????????...............................
..........???????????????????????...............................
...........??????????????????????...............................
............?????????????????????...............................
.............????????????????????...............................
...............??????????????????...............................
.................???????????????................................
...................?????????????................................
......................??????????................................
.........................??????.................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
SoL : FreeElectronics : DeadlyEnemies : 6a-ite : Rule X3VI
what is “sesame oil”?

simeks
Posts: 402
Joined: March 11th, 2015, 12:03 pm
Location: Sweden

Re: Bellman

Post by simeks » December 5th, 2018, 11:48 am

Rhombic wrote:However, Why does it give this as a valid result?
Because the solution is accepted at generation 18 once the catalysts have been restored and then stable for (stable-interval = 10) generations.
With your search parameters the check of the population doesn't start until generation 35, so that never happens.

User avatar
Rhombic
Posts: 1072
Joined: June 1st, 2013, 5:41 pm

Re: Bellman

Post by Rhombic » December 6th, 2018, 6:49 am

simeks wrote:
Rhombic wrote:However, Why does it give this as a valid result?
Because the solution is accepted at generation 18 once the catalysts have been restored and then stable for (stable-interval = 10) generations.
With your search parameters the check of the population doesn't start until generation 35, so that never happens.
This would mean setting inhabit-gen to 1 should check every generation. However, when I use it, it only checks about 800 catalysts and halts, which makes me think it's expecting more than one cell to be alive in the region in every generation after gen 1, not in at least one. Is this correct, and if so, how can I change it?
SoL : FreeElectronics : DeadlyEnemies : 6a-ite : Rule X3VI
what is “sesame oil”?

simeks
Posts: 402
Joined: March 11th, 2015, 12:03 pm
Location: Sweden

Re: Bellman

Post by simeks » December 10th, 2018, 6:14 pm

Rhombic wrote:This would mean setting inhabit-gen to 1 should check every generation. However, when I use it, it only checks about 800 catalysts and halts, which makes me think it's expecting more than one cell to be alive in the region in every generation after gen 1, not in at least one. Is this correct, and if so, how can I change it?
Yes, it checks for more than one cell in every generation...
As I wrote a few posts back if you want the population to be checked in just one single generation, change >= to == on line 791 (double equal sign).

In your example search, you'll have to change stable-interval to a value big enough so that the search will always reach generation = inhabit-gen before accepting a solution. Setting stable-interval = inhabit-gen should do it, but it could be slightly less depending on other search parameters.

User avatar
Entity Valkyrie 2
Posts: 1756
Joined: February 26th, 2019, 7:13 pm
Contact:

Re: Bellman

Post by Entity Valkyrie 2 » May 20th, 2020, 7:11 am

Is there a Bellman tutorial?
Bx222 IS MY WORST ENEMY.

Please click here for my own pages.

My recent rules:
StateInvestigator 3.0
B3-kq4ej5i6ckn7e/S2-i34q6a7
B3-kq4ej5y6c/S2-i34q5e
Move the Box

User avatar
Freywa
Posts: 877
Joined: June 23rd, 2011, 3:20 am
Location: Singapore
Contact:

Re: Bellman

Post by Freywa » June 29th, 2020, 2:20 am

I made a quick and dirty Lua script to turn a LifeHistory pattern into the #P section of a Bellman input file:

Code: Select all

local g = golly()

if g.getrule() ~= "LifeHistory" or #g.getrect() == 0 then
    g.warn("Rule must be LifeHistory and pattern must be non-empty.\n"..
           "State 1 = @ (active pattern) cells\n"..
           "State 2,4 = ? (searched catalyst) cells\n"..
           "State 3,5 = * (fixed catalyst) cells")
else
    local x, y, wd, ht = table.unpack(g.getrect())
    local s = "#P 0 0\n", c
    for b = -3, ht+2 do
        for a = -3, wd+2 do
            c = g.getcell(x+a, y+b)
            if c == 1 then
                s = s.."@"
            elseif c == 2 or c == 4 then
                s = s.."?"
            elseif c == 3 or c == 5 then
                s = s.."*"
            else
                s = s.."."
            end
        end
        s = s.."\n"
    end
    outf = io.open(g.savedialog(), "w")
    outf:write(s)
    outf:close()
end
Princess of Science, Parcly Taxel

Code: Select all

x = 31, y = 5, rule = B2-a/S12
3bo23bo$2obo4bo13bo4bob2o$3bo4bo13bo4bo$2bo4bobo11bobo4bo$2bo25bo!

User avatar
pzq_alex
Posts: 792
Joined: May 1st, 2021, 9:00 pm
Location: tell me if you know

Re: Bellman

Post by pzq_alex » June 7th, 2021, 10:03 pm

When I ran the command:

Code: Select all

./bellman inputs/qwq.in
Bellman crashes and gives:

Code: Select all

max_gens: 47
Reasons why search space was pruned:
   Catalyst is unstable: 0
   Found a solution: 0
   First encounter too early (first-encounter): 0
   First encounter too late (last-encounter): 0
   Took too long to stabilise (repair-interval): 0
   Too many active cells (max-active): 0
   Too many live cells (max-live): 0
   Hit forbidden region: 0
   Filter mismatch: 0
   Total: 0 (0.000000 Kprunes/sec)
TODO: handle tile wrap! (8, 0, 9)
Dumping 0
   000:
   001: EXPAND_LEFT EXPAND_RIGHT DIFFERS_FROM_PREVIOUS DIFFERS_FROM_2PREV IS_LIVE
   002: EXPAND_LEFT EXPAND_RIGHT DIFFERS_FROM_STABLE DIFFERS_FROM_PREVIOUS DIFFERS_FROM_2PREV IS_LIVE
   003: EXPAND_LEFT EXPAND_RIGHT DIFFERS_FROM_STABLE DIFFERS_FROM_PREVIOUS DIFFERS_FROM_2PREV IS_LIVE
   004: EXPAND_LEFT EXPAND_RIGHT DIFFERS_FROM_STABLE DIFFERS_FROM_PREVIOUS DIFFERS_FROM_2PREV IS_LIVE
   005: EXPAND_LEFT EXPAND_RIGHT DIFFERS_FROM_STABLE IS_DEAD DIFFERS_FROM_PREVIOUS DIFFERS_FROM_2PREV IS_LIVE
   006: EXPAND_UP EXPAND_LEFT DIFFERS_FROM_STABLE IS_DEAD DIFFERS_FROM_PREVIOUS DIFFERS_FROM_2PREV IS_LIVE
   007: EXPAND_UP EXPAND_LEFT DIFFERS_FROM_STABLE IS_DEAD DIFFERS_FROM_PREVIOUS DIFFERS_FROM_2PREV IS_LIVE
   008: EXPAND_UP EXPAND_DOWN EXPAND_LEFT DIFFERS_FROM_STABLE HAS_UNKNOWN_CELLS IS_DEAD DIFFERS_FROM_PREVIOUS DIFFERS_FROM_2PREV IS_LIVE
   009: EXPAND_UP EXPAND_DOWN EXPAND_LEFT DIFFERS_FROM_STABLE HAS_UNKNOWN_CELLS DIFFERS_FROM_PREVIOUS DIFFERS_FROM_2PREV IS_LIVE
   010: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT DIFFERS_FROM_STABLE HAS_UNKNOWN_CELLS DIFFERS_FROM_PREVIOUS DIFFERS_FROM_2PREV IS_LIVE
   011: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT DIFFERS_FROM_STABLE HAS_UNKNOWN_CELLS DIFFERS_FROM_PREVIOUS DIFFERS_FROM_2PREV IS_LIVE
   012: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT DIFFERS_FROM_STABLE HAS_UNKNOWN_CELLS DIFFERS_FROM_PREVIOUS DIFFERS_FROM_2PREV IS_LIVE
   013: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT DIFFERS_FROM_STABLE HAS_UNKNOWN_CELLS IS_DEAD DIFFERS_FROM_PREVIOUS DIFFERS_FROM_2PREV IS_LIVE
   014: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT DIFFERS_FROM_STABLE HAS_UNKNOWN_CELLS IS_DEAD DIFFERS_FROM_PREVIOUS DIFFERS_FROM_2PREV IS_LIVE
   015: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT HAS_UNKNOWN_CELLS IS_DEAD DIFFERS_FROM_PREVIOUS DIFFERS_FROM_2PREV IS_LIVE
   016: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT HAS_UNKNOWN_CELLS IS_DEAD DIFFERS_FROM_PREVIOUS DIFFERS_FROM_2PREV IS_LIVE
   017: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT HAS_UNKNOWN_CELLS IS_DEAD DIFFERS_FROM_PREVIOUS DIFFERS_FROM_2PREV IS_LIVE
   018: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT HAS_UNKNOWN_CELLS IS_DEAD DIFFERS_FROM_PREVIOUS DIFFERS_FROM_2PREV IS_LIVE
   019: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT HAS_UNKNOWN_CELLS IS_DEAD DIFFERS_FROM_PREVIOUS DIFFERS_FROM_2PREV IS_LIVE
   020: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT HAS_UNKNOWN_CELLS IS_DEAD DIFFERS_FROM_PREVIOUS DIFFERS_FROM_2PREV IS_LIVE
   021: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT HAS_UNKNOWN_CELLS IS_DEAD DIFFERS_FROM_PREVIOUS DIFFERS_FROM_2PREV IS_LIVE
   022: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT HAS_UNKNOWN_CELLS IS_DEAD DIFFERS_FROM_PREVIOUS DIFFERS_FROM_2PREV IS_LIVE
   023: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT HAS_UNKNOWN_CELLS IS_DEAD DIFFERS_FROM_PREVIOUS DIFFERS_FROM_2PREV IS_LIVE
   024: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT HAS_UNKNOWN_CELLS DIFFERS_FROM_PREVIOUS DIFFERS_FROM_2PREV IS_LIVE
   025: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT HAS_UNKNOWN_CELLS DIFFERS_FROM_PREVIOUS DIFFERS_FROM_2PREV IS_LIVE
   026: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT HAS_UNKNOWN_CELLS DIFFERS_FROM_2PREV IS_LIVE
   027: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT HAS_UNKNOWN_CELLS
   028: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT HAS_UNKNOWN_CELLS
   029: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT HAS_UNKNOWN_CELLS CHANGED
   030: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT HAS_UNKNOWN_CELLS
   031: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT HAS_UNKNOWN_CELLS
   032: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT HAS_UNKNOWN_CELLS
   033: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT HAS_UNKNOWN_CELLS
   034: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT HAS_UNKNOWN_CELLS
   035: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT HAS_UNKNOWN_CELLS
   036: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT HAS_UNKNOWN_CELLS
   037: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT HAS_UNKNOWN_CELLS
   038: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT HAS_UNKNOWN_CELLS
   039: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT HAS_UNKNOWN_CELLS
   040: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT HAS_UNKNOWN_CELLS IS_DEAD
   041: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT HAS_UNKNOWN_CELLS IS_DEAD
   042: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT HAS_UNKNOWN_CELLS IS_DEAD
   043: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT HAS_UNKNOWN_CELLS IS_DEAD
   044: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT HAS_UNKNOWN_CELLS IS_DEAD
   045: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT HAS_UNKNOWN_CELLS IS_DEAD
   046: EXPAND_UP EXPAND_DOWN EXPAND_LEFT EXPAND_RIGHT HAS_UNKNOWN_CELLS IS_DEAD
assertion "0" failed: file "bellman.c", line 761, function: bellman_choose_cells
Aborted (core dumped)
while running with inputs/test.in is fine.

This is inputs/qwq.in:

Code: Select all

#P 0 0
................
................
........@.......
.....@..@@......
......@@........
.......@........
??????..........
??????..........
??????..........
??????..........
??????..........
Because I cannot get "gf.h" on Cygwin, I am using my own modification of Bellman. Basically, I removed all references of `write_gif` and `write_animated_gif` in the code. Also, I modified the Makefile:

Code: Select all

OBJS := universe.o lib.o evolve_simple.o evolve_bitwise.o readfile.o findstill.o \
	writefile.o textconv.o

CFLAGS += -O3
#CFLAGS += -ggdb
#LDFLAGS += -pg

all: test_universe test_readwrite test_stabilise mkstill bellman envelope

test_%: $(OBJS) test_%.o
	$(CC) $(LDFLAGS) -o $@ $^

mkstill: $(OBJS) mkstill.o
	$(CC) $(LDFLAGS) -o $@ $^

bellman: $(OBJS) bellman.o
	$(CC) $(LDFLAGS) -o $@ $^

envelope: $(OBJS) envelope.o
	$(CC) $(LDFLAGS) -o $@ $^
clean:
	rm -f *.o mkstill bellman envelope test_universe test_readwrite test_stabilise
\sum_{n=1}^\infty H_n/n^2 = \zeta(3)

How much of current CA technology can I redevelop "on a desert island"?

Null

Re: Bellman

Post by Null » June 7th, 2021, 11:23 pm

This happens because Bellman is WIP and it cannot handle pattern going out the rectangle (0,0) ~ (63,63).
You can try to put the pattern near (32, 32) to minimize this behavior.
Also there's BellmanWin that does not need external dependencies. (Despite its name it should work on all major platforms)

Post Reply