Hacking apgsearch

For scripts to aid with computation or simulation in cellular automata.
Post Reply
User avatar
Hdjensofjfnen
Posts: 1742
Joined: March 15th, 2016, 6:41 pm
Location: re^jθ

Re: Hacking apgsearch

Post by Hdjensofjfnen » February 8th, 2017, 11:27 am

[quote="Apple Bottom"]
In any case I noticed something interesting: when you leave Golly and apgsearch 0.54+0.21i running undisturbed, memory usage only fluctuates by about 300 MB, barely a blip on the radar. However, if you interact with the view, say by zooming or panning, it sometimes suddenly starts consuming memory at a rate of 700 MB/second.

I haven't figured out exactly what's triggering this yet, but it appears that it's due to rapid UI interaction. If you don't do anything, patterns will happily evolve for tens of millions of generations.

I'm fairly sure right now that this IS a bug somewhere (in Golly, Golly's scripting subsystem, or apgsearch). Presumably it doesn't usually manifest because patterns stabilize too fast in "normal", soup-searchable rules for the user to be able to trigger it.

'course, given that, it's still just a curiosity.
[/quote="Apple Bottom"]

This has happened in Golly without apgsearch running actually. Golly slows down when you have your mouse on the grid. When you move off, it quickens again.

Code: Select all

x = 5, y = 9, rule = B3-jqr/S01c2-in3
3bo$4bo$o2bo$2o2$2o$o2bo$4bo$3bo!

Code: Select all

x = 7, y = 5, rule = B3/S2-i3-y4i
4b3o$6bo$o3b3o$2o$bo!

User avatar
BlinkerSpawn
Posts: 1992
Joined: November 8th, 2014, 8:48 pm
Location: Getting a snacker from R-Bee's

Re: Hacking apgsearch

Post by BlinkerSpawn » February 8th, 2017, 12:03 pm

This has happened in Golly without apgsearch running actually. Golly slows down when you have your mouse on the grid. When you move off, it quickens again.[/quote]
Presumably, it's realizing that when the mouse isn't over the grid it doesn't need to check the corresponding mouse events and skips that segment, giving the observed speed increase.
LifeWiki: Like Wikipedia but with more spaceships. [citation needed]

Image

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

Re: Hacking apgsearch

Post by praosylen » February 24th, 2017, 11:10 pm

I just made a quick hack to search for switch-engine-pair puffers:
apg-se.py.zip
(157.35 KiB) Downloaded 329 times
It's not really that big of a deal, honestly. It runs very slowly (~2 soups per second); I'm sure improvements could be made with the speed. For me it's only found a single interacting combination of block-laying switch engines, but I've only run 2000 soups so far.

EDIT: Of course, make especially sure not to upload to Catagolue.

EDIT 2: An actual, if probably useless, result:

Code: Select all

x = 38, y = 30, rule = B3/S23
bob4o2bo$b2o2b3ob2obob2o$5ob4o2bob2o$obo6b2o4bo$bo6bo2b2o2bo$b3o4b3o3b
o$b4ob2ob2obo$o4b2ob3o4bo$o4bobo2b3o$o2bobobob3o2b2o$2bo2b2obob2obo$b
2o3b2o4b2obo$o2bo2bob2o2bo$ob2o2b2o2b4o18bo$b2obobo2bo2b2obo12bo3b2o$
2b2o7bo2bo12bobob2obo$30bo4bo$26b3obo3bo2bo2$35bobo$36bo3$6b2o$5bo2bo
11bo$8bo3bo6b3o$5b5o3bo5b3o$7bo6bo7b3o$8bo3b2o$8b2o!
EDIT 3: A bunch more. Still not anything too useful:

Code: Select all

x = 3245, y = 72, rule = B3/S23
565bobo$565bobo$559bo3b2obo244bo$558b2o2bo2bo3bo240bobo$556bo3bobo6b2o
238b2ob2o555b3o$559bo4bobo4bo238bo2bo557bo$557bobo6bob3o239bo3bo554b3o
$566bob2o240bo$1370bo1162b3o$536b5o4b2o2bo276bo541b3o1164bo$535bo4bob
4o4bo273bo2bo538b3o1164b3o$322b3o4bo2bob3o199bo3b3o2b2o3bo239bob6o3bo
2bo19bo3bo538b2o$322b3obo3bob2o201b7o3b4o241bo4bo2bo24bo4bo1281b3o421b
o$326bo3b5obo198bo2bo2bobob2o2bo239b2o2bo2b4o2b3o5b3o10bo3b2o537b2o
742bo2bo9b4o405b3o$323b2obob2o3b2o2bo197bob2obobobobo242bobo4bobo3b2o
8bo11bo2bo538b2o13b2o727bo2bo2b2o5b2ob3o401b3o$323bobobo2bo3bobo198bob
2o3bo2b2o2bo240b5o2b3obobo5b2ob2o11b2o524bobobobobobo4bo13b2o728bo2bo
2b3o6b2ob2o401b2o$323b5obo4bobo200bob2o5bob2o242bo3bob3obo7bo2bo534bob
2ob4o2bo2b2o17bo3bo725bo4bo2bo10bo$323b5obobobobobo197bobo3b4o2b2o241b
o3b2obo4bobo6b2o536b2obo4b2o4bo2bobo13b3o726b2o14b3o400b2o$322b2ob3o9b
o197bo3b2o3bobobobo244bob2obo26bo521bo2b2o2bo2bo2bo3b3o14bo744bo401b2o
13b2o$322bobo2b2obo2b3o200b3o6bo4bo238b4o2bo2bo2bo2bo20b2ob2o518bobo4b
o3b2ob2o1151bobobobobobo4bo13b2o$15b4o2bo4bo295b5o2bob4o2bo12b2o183b3o
2b2o2bob3o245bobo2b2ob3o22bo521b8obo3b2o3b2o1143bob2ob4o2bo2b2o17bo3bo
$15bo3b6ob2o294bobo2bob3o2b2o13bo2bo182b7o3bo2b2o241bo2bob2ob2o552b2ob
o2b2ob2o18b2o1129b2obo4b2o4bo2bobo13b3o$16b4o2bo2b3o294bobo3b2obob4o
12b2o188b3ob2obo2bo241b6ob3o2b2o544b2o2bobo5bobo19b2o716b7obobo401bo2b
2o2bo2bo2bo3b3o14bo$14bo4bo3b5o294b5obo3b2obo14b5o181bobo2bobob2obo
240b2o3bo3bob5o546b3o2bo2b2ob2o19b3o714b3o2b2ob2o2b2o398bobo4bo3b2ob2o
$15b3ob3ob3o2bo293bo3bob3o2bobobo16b2o180b2obobo3b4o242bob6o2bo2bo543b
2o3bob3ob4o15bo5b2o361bo2b2obo2b4ob2o338bo3bob3o2bob2o397b8obo3b2o3b2o
$15b3obobobobobobo294b4ob2o4bobo13b2o2b2o432bo3b3obo2bobo545bo3bob2o2b
2o6b2o11bo4b3o361b3o3bobo3b2o339b2o3b4o407b2obo2b2ob2o18b2o$15bo2b2o8b
o293b4o2bo2b4o16bo2b2o433b2obobobobobobo545bobo3b4ob5o2b2o12bo3b3o360b
2ob2ob4o2bobo338bo3bo2bo2b6o397b2o2bobo5bobo19b2o$16bob2obo2bo4bo322b
3o999b4o2bobo21b3o363b2ob8obo337bobo3b2ob3o2b2o399b3o2bo2b2ob2o19b3o$
17b3ob3o4bo324bo994bo3bo4b2o2b3o17b2ob2o361bob2obobobobo2b2o337bo2bobo
bo2b2obobo396b2o3bob3ob4o15bo5b2o328b3o2bob3o2bo14bo298bo3b4o2b2o3bo$
16bo2bobo2b5o1320b3o3b2obo2b2o18b2ob2o368b3o345b2o2b5o401bo3bob2o2b2o
6b2o11bo4b3o325bo2bob4o3b4o9bo3b2o299b3o5bo$17bob2o2bo2bob2o510b3o805b
2o2bo2b2o5bo19bobo362bo4b3obobob2o340b4o3bo2bobo397bobo3b4ob5o2b2o12bo
3b3o326bo3bo2b3o3bo9bobob2obo299bob2ob3ob4o$14b2o3bo5b2obo511bobo840bo
363b2obo2bo2b2o2bo340b3obobob2obobo403b4o2bobo21b3o325bobo2bob2obob4o
11bo4bo295b2o2bo4b2obo$15bo4bo2b3obo512bo2bo250b3o950b2o5bobob2o341bob
3o2bo2b3obo396bo3bo4b2o2b3o17b2ob2o326b3obo4b3obobo7b3obo3bo2bo296b2ob
ob2obobobo5b3o$17bo2b2obob3o513b3o253bo949bo2b3ob5o2b2o337bobobo6b3obo
397b3o3b2obo2b2o18b2ob2o326b3o6bo3b2o313b3obob2o2bo2b2o6bo2bo$3bo10b2o
7bo2b4o511b3o250bo2bo949bo9b2o345bo5bo2bobo396b2o2bo2b2o5bo19bobo327bo
b3o3b3o21bobo294b3ob3o3bob2o8b2o$2b3o9b2o7b2o3b2o509bo2bo252b2o951bob
3ob4obo2bo338bob3ob4ob4o431bo328bob2obobo3bo3bo17bo294bob4obobob2o2bo$
b5o536bo252b2o953b2ob2ob2ob2o342b2o4b3ob2o765bo3b4ob2o314bobo3b2o5bo4b
o2bo$b2ob3o40b2o490bo15b3o236bo2bo950b2obo4b2ob2o340bo3b3o2bo3b2o760b
4o2bo2b3obobo314bob2ob2ob5o5b2o$2b2ob2o39b3o505b4o236bo952b3obob2obob
2o1120bo2bo2b2o2b2o312b3obobob2o4bo8b2o$4bo42b2o282b2o208bo12bo3bo237b
2o951b2ob3ob2obobo1118b2ob3o2bo2bo312bobob2ob4obo9b3o10b2ob2o$49bo280b
o210bo12b2obo2319bob2ob2o2b4o318bob3ob3obo8bo11bo2bo$49bo280bo208bo2bo
11b2obo2318b3obobobobo4bo312bobo3bobo2bo3bo4bo2bo13b2o$49bo280b7o203b
3o13bo2321b3ob4o2bob2o312bo2b2o4bobobo7b2o13bo$331bo5bo202bobo266b3o
2064bo3bo4b2obob2o312b2ob3obobo2bo2bo5b2o12bobo$19bo312b3o2bo203b2o
250b3o16b2o$18b2o312bo4bo218bobo233bo2bo12bo2416b3o$b3o14bobo312bo2bo
219bo2bo232b3obo12b2ob2o2070b3o$bobo15bo313b3o220bobo233bo2092bo355b4o
$o2bo14bobo774b2o2088b3o353bo$2obo14bobo771bob2o13b3o934bo$o2bo790bo
13bo938bo$794bo12bo4bo924bo10bo$16b5o773b2o10bo5bo923b3o11b2o$3bo11bob
4o772bo2bo9bo5bo923bo2bo3bo6b3o$b3o10bo675b2o102b2o11bo2b2o927b2o2b3o
7bo$15b2o673bo119bobo926bo4b9o1149bo$811bo926bo6b7o31b2ob3o1112bobo$
18b3o790bo549b2o384b3o32b3ob2obo1094bo12bobob2o$1360bo2bo418bob2o4bo
1092b2o11bo4bo$1360b2o420bo8bo1089b2obo11bo4bo$1361b5o416bo4bobobo
1089b3o18bo$1365b2o420bo4bo732b2o355bob2o17bo$1362b2o2b2o415bo7bo732bo
2bo355b2o13bo3bo$1362bo2b2o417bo345b2o392b2o357b2o17bo$1363b3o419bo3bo
339bo2bo392b5o355bo12b7o$1364bo764b2obo396b2o367bo5bo307b2o$1787b2o
342b4o391b2o2b2o680bobo10b3o$2135bo390bo2b2o369b3o308bo$2131b2o3bo390b
3o682bo2bo3bo5bo3bo$2131bo3bo392bo686bo2bobo5b4o$2132b3o1078b3o3bo9bo$
3214b2o!
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...

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

Re: Hacking apgsearch

Post by drc » February 25th, 2017, 1:03 am

Useless results:

Code: Select all

x = 1638, y = 150, rule = B3/S23
1619b2o$1618b3o$1618bo2bo$1618b2ob2o$1618b2ob2o$1617b2ob2o$1618bo$
1619b3o$1620bo3$1634bo$1617b3o16bo$1617b3o13bo$1615b2o3bo11b2ob2o$
1615b2obobo13bo$1615b2o3bo$1616bo3b2o11b2o$1620bo11bo$1632bo2bo$1630b
2obo$1421bo178bobo2bo2bobo2b2obo2bo12bo2b3o$1420b3o11b2o164bo3bobob6o
3bo2bo9b2o$1419b2o2bo9bo2bo164b3o3b2o2bo6b2o16b2o$1419b6obobo4bo4b2o
160bobo3b2o2bo22b2ob2o$1420b3o2bo2bo5b3ob2o160b2o3b2obob2o3bo18bobo$
1420b2o4bobo7bo3bo161bo2bobo5b2o20bo$1421b2o14b3o160bob2obob3obo2b2o$
1222b3o176b2o2b2o8bo21b3o160b2ob2ob5ob2obo$1221bo2bo176b2o2bobobob2obo
185b3o2bobo2b3o2bo$1225bo174b3obo2bob4o2bo184b2o2b2o2b2obob3o$1221b2o
177bob2o2bo2b3ob2o185b2o3b2obo3b4o$1221b2o3bo173bo2bo2bo5bo2bo186b2ob
5o2b3o$1226bo12bo161bo9bo2b2o184bo2bo3bo2b2o2b2o$1224bo12b3o162bobo2b
3o3bobo186bo5b2o5bo$1222b3o11b2ob2o160b3o2b4ob5o184bob2ob5ob4o$1222b2o
176b4o2bo2bobo2bo188b3o2b2o2b2o$1222bo13b2o163b3ob2obob2o2bo$1237bo
162bo2bo3b3obo$1237b2o162b2obo3b2ob2ob2o$1222b3o13bo161bo4bob5ob2o$
1237b3o161bo3bob4obobo$1237b3obo159bo2b2obob3o2b2o$1241bo159b2o2bob3o
2b2obo$1241bo2$814bo2b2o181bo3bobo4bob2o186b2ob3obo4bo$818b2o180bo2b5o
2bobo2bo18bo167b5o3b2o3bo$817b2o182b2o3b4o23b3o168bo3b2ob2o2bo191bo$
1000b4ob2obob6o187b3o2bo3bo193bobo$813b2o2b2o181bobobo5b2obobo10bobo4b
o3bo162b2o3b2obo2bob2o190b2ob2o$819bo180b4obo2b2o3bobo9b5ob2o4bo162bo
4b4ob2obobo190bo2bo$813b4o184b2o3bo2bo2bob2o9bo3bo2bobo2bo162b4o3bobob
o194bo3bo$815bo2bo182b3o2bob2ob5o16bo168bob3o2b2o2bob2o190bo$1001bo2b
10o186b2o2b4o2b2o$815bo185b2o2b2o2b2o2bo189bo3bob3o210bo$814b2o13b2o
169b4ob4o2bob2o185bob2ob3o3b4o205bo2bo$814bo14bo2bo167b2o3b4o3b2obo
184bo2b5ob3o2bo205bo3bo$815bo13bo3bo166b2o2b3o2b2o2b3o186b5ob2o4bo204b
o4bo$830b3o168bobobo5bo2bo189b2o5bo3bo190b3o10bo3b2o$814b3o187bo2b2ob
3o2bo185b3o3bo2b3o195bo11bo2bo$815bo184bo7b3ob2o186bo3b2o3bo2b4o189b2o
b2o11b2o190b2o$815b2o10bobo379bo3bo192bo2bo203b2o$826bo3bo380bobo12b2o
179b2o204bobo$831b2o391b4o195bo189b3o$826bo5bo375b2ob2o208b2ob2o188bo
2bo$826bo6bo176bo199bo13bobo4bo191bo190b2ob2o$626bo174b2o2bobob3ob3o
11b2o4bo176bo215bo388bobo$626bo174b3o2bobo3bob2o17bo181b3o206bobo389bo
$631b3o168bobo5bo2b3o13bo3bo182bo194bo11bo$632bo168bobobob6ob2o13bo3bo
174bo6b3o193bo12bo3b2o3bo$624bo6b3o166bobo2bob2o3bo2bo14bobo175b4o4b5o
190bo13bo$624b4o4b5o168bob2o3b2obo14b3o174bo3b4ob2o208bob2o$623bo3b4ob
2o166bob2o3bob4o195bo4b2o212b3o$624bo4b2o170b4ob5o2bobo200b2o210b2o$
632b2o173bobo2bobo$800b2ob2obo2bo2bobo$802b7obob2obo$804b3o7bo$217bo
182bob4obo2bo2bo189b2ob3obo2bobo188b5obobo2bo$216b3o183bo2b2o2b3ob3o
186bo5b2o3bo189bo2bo3b3ob2o$216b3o181b2o4b3ob2o2b2o184bo3b5o2bobo186b
2obo2b2ob3obo$405bo3b2o3bo185b3ob3o3b3o191b2o2b2obo3bo$216b4o180b7ob2o
b2o2bo186b2obobo2bobo2bo$215b5o184bo7b2o186b2o2b4ob3ob2o$215b2obo181b
2obo5bob2o2bo184b2o2b4ob3o3bo$400bobo2bo2b4o2b2o184bo2bobo2bob2obobo$
233bo166b4o3bo3bobo12b3o173bo4bobob3o$230bo3bo166bobo3bo2b3ob2o9bo3bo
171b4obob2ob4o$229bo5bo164bob3o3b2obo2bo15bo170bo3bobo2bo2b2o$216bobo
11b2ob2o165bo3b2obobobob2o188b4o2b3o2b2o$216bo2bo181b2o2b6obo2bo9b2o3b
o171b3o7b2obo$215bo3bo10bo170bobo4bo4bo13b3o172bobo2bo3bob2o$214b3o2b
2o9b4o163b6obob3o2bobo186b2obo4bob3obo$215bo3bo11bobo165bo2bobobo3bobo
189b3obo4b2obo$216b3o14bo163b3o$217bo14b3o$obob2obo2b2o3bo184b3o3bo2b
2ob2obo15b2ob2o162bo43b2o$2ob2obob2o3b2o187b2o4bo2b2o19b3o161b3o27bo
15bobo$bo2b2o3bobo2b2o185b3o7bobo19bo160b3o28bobo14bobo$o2bobo2bob5o
186b2o2bobo3b3o181b2o27b2ob2o13bobo$o4bo2bo5bo186b2o2bo5b3obo208bo2b2o
13bobo$b2ob4o2b2o188b4o2b4ob3obo178b2o27b3ob2o$6b2o4bo187b2obo3b2o4bob
o178b2o13b2o13b3o$o2bo2bo2bo2b3o187bo3bobob5o179bo13b2o31b3o$bo2b2obo
4b2obo184bob2obo2bobo4bo193bo3bo26bo3bo$b7ob4ob2o184b2o3bo4bob2obo178b
obo13b3o14bo11bo4bo$2o4bo3bobo2bo184bo3b2o5bobobo178b3o14bo14b2o10bo2b
3o$3bo4b3o4bo185bobob3o2b4o212bo12bo182bo$b2o7bobo187bo4b2o5bo2bo179b
2o46bo178b2o$2obo2b2o3bobo17bo168bobobob3obob2o196b2o31bo178bo2bo183bo
$2b3o4b4obo15bobo168b5o2b5obo196b2o30bo366b5o$b6ob2obobo15bo170bo2b3o
3bob2o2bo195b3o209bobo183bobo2bob3o$28bo2bo374bo5b2o210bo187bo6bo$21b
5o2bo2bo362b2o11bo4b3o394bo3b2o4bo$21bo6bo2bob3o358b2o12bo3b3o393bobo
3bo4bo$22b4o3b2o381b3o394bo6b3o$409b2ob2o$409b2ob2o$410bobo$411bo4$4b
3o$7bo$4bo2bo$5b2o$5b2o$4bo2bo$4bo$6b2o2$221bo$216bobobobo$19b3o194bo
6bo$3b3o16b2o191b2ob3o3bo$2bo2bo12bo196b2o8bo$2b3obo12b2ob2o198bob3o$
2bo219bob3o$5b2o$2bob2o13b3o196bo$4bo13bo$4bo12bo4bo199bo$4b2o10bo5bo$
3bo2bo9bo5bo$4b2o11bo2b2o$20bobo$21bo$21bo!

User avatar
Apple Bottom
Posts: 1034
Joined: July 27th, 2015, 2:06 pm
Contact:

Re: Hacking apgsearch

Post by Apple Bottom » March 25th, 2017, 2:53 pm

This is a new error that happened while soup-searching B2in3-jn4aerw5c6/S2-k3-a4-r:
4IdSuJf.png
4IdSuJf.png (14.38 KiB) Viewed 286 times
I'm guessing that period must be zero here, but I haven't looked at the script to see why this could be, and how it should best be handled if it happens.
If you speak, your speech must be better than your silence would have been. — Arabian proverb

Catagolue: Apple Bottom • Life Wiki: Apple Bottom • Twitter: @_AppleBottom_

Proud member of the Pattern Raiders!

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

Re: Hacking apgsearch

Post by praosylen » March 25th, 2017, 3:55 pm

Apple Bottom wrote:This is a new error that happened while soup-searching B2in3-jn4aerw5c6/S2-k3-a4-r:

Image

I'm guessing that period must be zero here, but I haven't looked at the script to see why this could be, and how it should best be handled if it happens.
Wow. Oops... I'm not sure what's going on there -- like you say, the period is probably 0 for some reason, but in order for that to happen, the script seems to need to revisit the same generation twice, which should be impossible because g.run(30) is called between each potentially problematic segment. Short of a cosmic ray, and unless I'm missing something, this should not happen.
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
Apple Bottom
Posts: 1034
Joined: July 27th, 2015, 2:06 pm
Contact:

Re: Hacking apgsearch

Post by Apple Bottom » March 25th, 2017, 5:43 pm

A for awesome wrote:Wow. Oops... I'm not sure what's going on there -- like you say, the period is probably 0 for some reason, but in order for that to happen, the script seems to need to revisit the same generation twice, which should be impossible because g.run(30) is called between each potentially problematic segment. Short of a cosmic ray, and unless I'm missing something, this should not happen.
Cosmic rays, there's a thought! But no, I don't think it was a stray ray: I just got the same error again, after a little more than 20,000 soups (two successfully-uploaded hauls).

Seems that this is common enough to be investigatable -- if you want to provide a "debug" version of the script I'll be happy to run that and collect whatever debug information may be useful to help track this down.
If you speak, your speech must be better than your silence would have been. — Arabian proverb

Catagolue: Apple Bottom • Life Wiki: Apple Bottom • Twitter: @_AppleBottom_

Proud member of the Pattern Raiders!

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

Re: Hacking apgsearch

Post by praosylen » March 25th, 2017, 7:05 pm

Apple Bottom wrote:Seems that this is common enough to be investigatable -- if you want to provide a "debug" version of the script I'll be happy to run that and collect whatever debug information may be useful to help track this down.
There's also the problem that I didn't write that portion of the script, so I don't entirely understand what's going on there, and therefore exactly what debugging information would be useful -- I suppose any information would probably be of some help, so there's that. I could take the time to figure out exactly how that piece of code works, but I'm really busy right now; hopefully there'll be time tomorrow afternoon... If not, hopefully in this coming week some time.
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
83bismuth38
Posts: 556
Joined: March 2nd, 2017, 4:23 pm
Location: perpendicular to your eyes
Contact:

Re: Hacking apgsearch

Post by 83bismuth38 » April 24th, 2017, 6:46 pm

is there any way to make it NOT a pain to download? because from what I've seen you have to have like 1000 other programs to make it work, and I don't think I have the time (or computer space) for that.
edit: nmv, i had 64-bit python with 32-bit golly. oops. :roll:
looking to support hive five (n+18) and charity's oboo reaction (2n+18)

Code: Select all

x = 28, y = 13, rule = B3/S23
19bo$3bo15bo4b2o$2bobo14bo4bobo$2bobo20b2o$3bo11b3o2$25b3o$b2o22b3o$o
2bo$b2o12b2o$10b2o2bobo$bo8b2o2b2o$obo7b2o!

User avatar
Lewis
Posts: 337
Joined: March 17th, 2009, 5:26 pm
Location: UK
Contact:

Re: Hacking apgsearch

Post by Lewis » May 6th, 2017, 7:15 am

Would someone be able to help/explain to me how to get the Golly apgsearch (v0.54+0.21i) to work with the rule B2ei3kajr4ekaiqtwz5ckajr6cein7c/S1e2ka3einyq4nyjr5einyq6ka7e (i.e. B24/S13 with a 4-neighbor Von Neumann neighborhood)?

72c20e
Posts: 62
Joined: June 10th, 2016, 5:52 am

Re: Hacking apgsearch

Post by 72c20e » May 29th, 2017, 6:43 am

I live in china,so I can't open catalogue. Can I make my apgmera to send results to a census on the LAN instead of catalogue?

Code: Select all

x = 15, y = 36, rule = B38/S23-
bo$2bo$3o14$13bo$12bo$12b3o2$11bo$12bo$10b3o4$12b3o$12bo$13bo2$10bo$8b
obo$9b2o$6b2o$5bobo$7bo!

Ethanagor
Posts: 80
Joined: March 15th, 2017, 7:34 pm
Location: the Milky Way galaxy

Re: Hacking apgsearch

Post by Ethanagor » June 8th, 2017, 5:46 pm

I REALLY don't want to search through this whole thread, so I will ask a stupid question: Is there a way to run non-totalistic rules in APGSearch?
"It's not easy having a good time. Even smiling makes my face ache." - Frank N. Furter

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

Re: Hacking apgsearch

Post by dvgrn » June 8th, 2017, 6:50 pm

Ethanagor wrote:I REALLY don't want to search through this whole thread, so I will ask a stupid question: Is there a way to run non-totalistic rules in APGSearch?
Technically isotropic rules are one type of non-totalistic rule -- the symmetrical kind where rotating or reflecting the pattern doesn't make a difference to its evolution. I think this hacked version is still the latest and greatest for isotropic rules, but I haven't been paying very good attention and could be wrong.

If you mean anisotropic non-totalistic rules, ones that you need a MAP rule to specify, where a spaceship traveling northwest might turn into a still life or oscillator or big random mess if you rotate it to point northeast... well, then I'm fairly sure the answer is no. In all capitals, probably, with a "never" and maybe a "Heaven forfend!" after it.

One of the basic assumptions on which Catagolue is founded is the idea that we can produce a canonical apgcode for any given object -- and we get that by generating apgcodes for all possible rotations and reflections, sorting them, and picking the one at the top of the list as the canonical one.

If other orientations of an "xq" pattern might actually be an "xp" pattern, or more likely not a stable pattern at all... then, well, on balance it seems better to not try to get Catagolue involved.

Ethanagor
Posts: 80
Joined: March 15th, 2017, 7:34 pm
Location: the Milky Way galaxy

Re: Hacking apgsearch

Post by Ethanagor » June 9th, 2017, 5:26 pm

dvgrn wrote: Technically isotropic rules are one type of non-totalistic rule -- the symmetrical kind where rotating or reflecting the pattern doesn't make a difference to its evolution. I think this hacked version is still the latest and greatest for isotropic rules, but I haven't been paying very good attention and could be wrong.
Yes, I was referring specifically to Hensel-notation rules. Thanks!

Edit: This still doesn't work. The rule I am trying to search is B34k5q8/S234cez5k7e (Tinlife), but the letters get removed by APGSearch, transforming it into B3458/S23457, which explodes ad infinitum.
"It's not easy having a good time. Even smiling makes my face ache." - Frank N. Furter

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

Re: Hacking apgsearch

Post by praosylen » June 9th, 2017, 8:48 pm

Ethanagor wrote:Edit: This still doesn't work. The rule I am trying to search is B34k5q8/S234cez5k7e (Tinlife), but the letters get removed by APGSearch, transforming it into B3458/S23457, which explodes ad infinitum.
Yes. That's a limitation in the current version. You need to first create a rule file for the specified rule using this script (credits to wildmyron here):

Code: Select all

# isotropic-rule-gen.py, version 1.1
# Change from v1.0:
#    added @ICONS section to output rule, to avoid triggering shared-rule logic in Golly
#
# isotropic-rule.py / isotropicRulegen.py
# Auxillary rule generator from wildmyron's non-totalistic version of apgsearch
# The rulespace is the set of isotropic non-totalistic rules on the Moore
# neighbourhood, using Alan Hensel's notation.
# See http://www.ibiblio.org/lifepatterns/neighbors2.html
# Generate a rule table for an isotropic rule using Alan Hensel's
# isotropic, non-totalistic rule format for CA on the Moore neighbourhood

import golly as g
import os

# Generates the helper rules for apgsearch-isotropic, given a base isotropic 
# rule in Hensel's notation.
class RuleGenerator:

    # notationdict adapted from Eric Goldstein's HenselNotation->Ruletable(1.3).py
    # Modified for neighbourhood2 version of Hensel's notation
    notationdict = {
        "0"  : [0,0,0,0,0,0,0,0],   #    
        "1e" : [1,0,0,0,0,0,0,0],   #   N
        "1c" : [0,1,0,0,0,0,0,0],   #   NE
        "2a" : [1,1,0,0,0,0,0,0],   #   N,  NE
        "2e" : [1,0,1,0,0,0,0,0],   #   N,  E
        "2k" : [1,0,0,1,0,0,0,0],   #   N,  SE
        "2i" : [1,0,0,0,1,0,0,0],   #   N,  S
        "2c" : [0,1,0,1,0,0,0,0],   #   NE, SE
        "2n" : [0,1,0,0,0,1,0,0],   #   NE, SW
        "3a" : [1,1,1,0,0,0,0,0],   #   N,  NE, E
        "3n" : [1,1,0,1,0,0,0,0],   #   N,  NE, SE
        "3r" : [1,1,0,0,1,0,0,0],   #   N,  NE, S
        "3q" : [1,1,0,0,0,1,0,0],   #   N,  NE, SW
        "3j" : [1,1,0,0,0,0,1,0],   #   N,  NE, W
        "3i" : [1,1,0,0,0,0,0,1],   #   N,  NE, NW
        "3e" : [1,0,1,0,1,0,0,0],   #   N,  E,  S
        "3k" : [1,0,1,0,0,1,0,0],   #   N,  E,  SW
        "3y" : [1,0,0,1,0,1,0,0],   #   N,  SE, SW
        "3c" : [0,1,0,1,0,1,0,0],   #   NE, SE, SW
        "4a" : [1,1,1,1,0,0,0,0],   #   N,  NE, E,  SE
        "4r" : [1,1,1,0,1,0,0,0],   #   N,  NE, E,  S
        "4q" : [1,1,1,0,0,1,0,0],   #   N,  NE, E,  SW
        "4i" : [1,1,0,1,1,0,0,0],   #   N,  NE, SE, S
        "4y" : [1,1,0,1,0,1,0,0],   #   N,  NE, SE, SW
        "4k" : [1,1,0,1,0,0,1,0],   #   N,  NE, SE, W
        "4n" : [1,1,0,1,0,0,0,1],   #   N,  NE, SE, NW
        "4z" : [1,1,0,0,1,1,0,0],   #   N,  NE, S,  SW
        "4j" : [1,1,0,0,1,0,1,0],   #   N,  NE, S,  W
        "4t" : [1,1,0,0,1,0,0,1],   #   N,  NE, S,  NW
        "4w" : [1,1,0,0,0,1,1,0],   #   N,  NE, SW, W
        "4e" : [1,0,1,0,1,0,1,0],   #   N,  E,  S,  W
        "4c" : [0,1,0,1,0,1,0,1],   #   NE, SE, SW, NW
        "5i" : [1,1,1,1,1,0,0,0],   #   N,  NE, E,  SE, S
        "5j" : [1,1,1,1,0,1,0,0],   #   N,  NE, E,  SE, SW
        "5n" : [1,1,1,1,0,0,1,0],   #   N,  NE, E,  SE, W
        "5a" : [1,1,1,1,0,0,0,1],   #   N,  NE, E,  SE, NW
        "5q" : [1,1,1,0,1,1,0,0],   #   N,  NE, E,  S,  SW
        "5c" : [1,1,1,0,1,0,1,0],   #   N,  NE, E,  S,  W
        "5r" : [1,1,0,1,1,1,0,0],   #   N,  NE, SE, S,  SW
        "5y" : [1,1,0,1,1,0,1,0],   #   N,  NE, SE, S,  W
        "5k" : [1,1,0,1,0,1,1,0],   #   N,  NE, SE, SW, W
        "5e" : [1,1,0,1,0,1,0,1],   #   N,  NE, SE, SW, NW
        "6a" : [1,1,1,1,1,1,0,0],   #   N,  NE, E,  SE, S,  SW
        "6c" : [1,1,1,1,1,0,1,0],   #   N,  NE, E,  SE, S,  W
        "6k" : [1,1,1,1,0,1,1,0],   #   N,  NE, E,  SE, SW, W
        "6e" : [1,1,1,1,0,1,0,1],   #   N,  NE, E,  SE, SW, NW
        "6n" : [1,1,1,0,1,1,1,0],   #   N,  NE, E,  S,  SW, W
        "6i" : [1,1,0,1,1,1,0,1],   #   N,  NE, SE, S,  SW, NW
        "7c" : [1,1,1,1,1,1,1,0],   #   N,  NE, E,  SE, S,  SW, W
        "7e" : [1,1,1,1,1,1,0,1],   #   N,  NE, E,  SE, S,  SW, NW
        "8"  : [1,1,1,1,1,1,1,1],   #   N,  NE, E,  SE, S,  SW, W,  NW
        }
    
    allneighbours = [  
        ["0"],
        ["1e", "1c"],
        ["2a", "2e", "2k", "2i", "2c", "2n"],
        ["3a", "3n", "3r", "3q", "3j", "3i", "3e", "3k", "3y", "3c"],
        ["4a", "4r", "4q", "4i", "4y", "4k", "4n", "4z", "4j", "4t", "4w", "4e", "4c"],
        ["5i", "5j", "5n", "5a", "5q", "5c", "5r", "5y", "5k", "5e"],
        ["6a", "6c", "6k", "6e", "6n", "6i"],
        ["7c", "7e"],
        ["8"],
        ]
        
    allneighbours_flat = [n for x in allneighbours for n in x]
    
    numneighbours = len(notationdict)
    
    # Use dict to store rule elements, initialised by setrule():
    bee = {}
    ess = {}
    alphanumeric = ""
    rulename = ""
    
    # Save the isotropic rule
    def saveAllRules(self):    
        self.saveIsotropicRule()
    
    # Interpret birth or survival string
    def ruleparts(self, part):

        inverse = False
        nlist = []
        totalistic = True
        rule = {}
        for k in self.notationdict:
            rule[k] = False
        
        # Reverse the rule string to simplify processing
        part = part[::-1]
        
        for c in part:
            if c.isdigit():
                d = int(c)
                if totalistic:
                    # Add all the neighbourhoods for this value
                    for neighbour in self.allneighbours[d]:
                        rule[neighbour] = True
                elif inverse:
                    # Add all the neighbourhoods not in nlist for this value
                    for neighbour in self.allneighbours[d]:
                        if neighbour[1] not in nlist:
                            rule[neighbour] = True
                else:
                    # Add all the neighbourhoods in nlist for this value
                    for n in nlist:
                        neighbour = c + n
                        if neighbour in rule:
                            rule[neighbour] = True
                        else:
                            # Error
                            return {}
                    
                inverse = False
                nlist = []
                totalistic = True

            elif (c == '-'):
                inverse = True

            else:
                totalistic = False
                nlist.append(c)
        
        return rule

    # Set isotropic, non-totalistic rule
    # Adapted from Eric Goldstein's HenselNotation->Ruletable(1.3).py
    def setrule(self, rulestring):
    
        # neighbours_flat = [n for x in neighbours for n in x]
        b = {}
        s = {}
        sep = ''
        birth = ''
        survive = ''
        
        rulestring = rulestring.lower()
        
        if '/' in rulestring:
            sep = '/'
        elif '_' in rulestring:
            sep = '_'
        elif (rulestring[0] == 'b'):
            sep = 's'
        else:
            sep = 'b'
        
        survive, birth = rulestring.split(sep)
        if (survive[0] == 'b'):
            survive, birth = birth, survive
        survive = survive.replace('s', '')
        birth = birth.replace('b', '')
        
        b = self.ruleparts(birth)
        s = self.ruleparts(survive)

        if b and s:
            self.alphanumeric = 'B' + birth + 'S' + survive
            self.rulename = 'B' + birth + '_S' + survive
            self.bee = b
            self.ess = s
        else:
            # Error
            g.note("Unable to process rule definition.\n" +
                    "b = " + str(b) + "\ns = " + str(s))
            g.exit()
            

    # Save a rule file:
    def saverule(self, name, comments, table, colours):
        
        ruledir = g.getdir("rules")
        filename = ruledir + name + ".rule"

        results = "@RULE " + name + "\n\n"
        results += "*** File autogenerated by saverule. ***\n\n"
        results += comments
        results += "\n\n@TABLE\n\n"
        results += table
        results += "\n\n@COLORS\n\n"
        results += colours
        results += "\n\n@ICONS\n\n"
        results += "circles\n"

        # Only create a rule file if it doesn't already exist; this avoids
        # concurrency issues when booting an instance of apgsearch whilst
        # one is already running.
        if not os.path.exists(filename):
            try:
                f = open(filename, 'w')
                f.write(results)
                f.close()
            except:
                g.warn("Unable to create rule table:\n" + filename)

    # Defines a variable:
    def newvar(self, name, vallist):

        line = "var "+name+"={"
        for i in xrange(len(vallist)):
            if (i > 0):
                line += ','
            line += str(vallist[i])
        line += "}\n"

        return line

    # Defines a block of equivalent variables:
    def newvars(self, namelist, vallist):

        block = "\n"

        for name in namelist:
            block += self.newvar(name, vallist)

        return block

    def scoline(self, chara, charb, left, right, amount):

        line = str(left) + ","

        for i in xrange(8):
            if (i < amount):
                line += chara
            else:
                line += charb
            line += chr(97 + i)
            line += ","

        line += str(right) + "\n"

        return line

    def isotropicline(self, chara, charb, left, right, n):

        line = str(left) + ","
        neighbours = self.notationdict[n]
        
        for i in xrange(8):
            if neighbours[i]:
                line += chara
            else:
                line += charb
            line += chr(97 + i)
            line += ","

        line += str(right) + "\n"

        return line
        
    def saveIsotropicRule(self):
    
        comments = """
This is a two state, isotropic, non-totalistic rule on the Moore neighbourhood.
The notation used to define the rule was originally proposed by Alan Hensel.
See http://www.ibiblio.org/lifepatterns/neighbors2.html for details
"""

        table = """
n_states:2
neighborhood:Moore
symmetries:rotate4reflect
"""

        table += self.newvars(["a","b","c","d","e","f","g","h"], [0, 1])

        table += "\n# Birth\n"
        for n in self.allneighbours_flat:
            if self.bee[n]:
                table += "0,"
                table += str(self.notationdict[n])[1:-1].replace(' ','')
                table += ",1\n"
        
        table += "\n# Survival\n"
        for n in self.allneighbours_flat:
            if self.ess[n]:
                table += "1,"
                table += str(self.notationdict[n])[1:-1].replace(' ','')
                table += ",1\n"

        table += "\n# Death\n"
        table += self.scoline("","",1,0,0)
        
        colours = ""
        self.saverule(self.rulename, comments, table, colours)

rulestring = g.getstring("Enter rule string in Alan Hensel's isotropic rule notation", 
                         "B2-a/S12")

rg = RuleGenerator()

rg.setrule(rulestring)
rg.saveIsotropicRule()
g.setrule(rg.rulename)

g.show("Created rule in file: " + rg.rulename + ".rule")
Then, run the hacked apgsearch as normal, except using an underscore instead of a slash as a separator (i.e. B34k5q8_S234cez5k7e instead of B34k5q8/S234cez5k7e).
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...

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

Re: Hacking apgsearch

Post by drc » June 9th, 2017, 9:04 pm

This is quite worrying:

Code: Select all

x = 16, y = 16, rule = B37e/S23
bob4obobob4o$4obo2bo2b2o$2b2obob5o2b2o$bo3bobo2bobob2o$3bobob2o2b2o$bo
bob3o2bobobo$o2bobobo2b2o$4obobob3o$3o3bo3bo2bobo$2bobo9bo$b2ob2obobo
2bo$2o5b9o$bo2b2o2b2ob4o$6b2o2b2o2bo$3bob4o2bo2bo$3obob3ob2obobo!
This is classed as two different puffers, giving one the APGcode of yl52_1_9_###, 9 being the amount of bits created every cycle. Even though they interact, it's still classed as individual objects.

User avatar
BlinkerSpawn
Posts: 1992
Joined: November 8th, 2014, 8:48 pm
Location: Getting a snacker from R-Bee's

Re: Hacking apgsearch

Post by BlinkerSpawn » June 9th, 2017, 9:28 pm

drc wrote: Even though they interact, it's still classed as individual objects.
I think the problem is that their interaction isn't detected because they're sorta 3000 generations apart and I guess their histories don't go back quite that far.
LifeWiki: Like Wikipedia but with more spaceships. [citation needed]

Image

User avatar
Apple Bottom
Posts: 1034
Joined: July 27th, 2015, 2:06 pm
Contact:

Re: Hacking apgsearch

Post by Apple Bottom » June 30th, 2017, 5:16 am

wwei23 -- WW on Catagolue -- has been searching various pseudo-symmetries not previously supported by apgsearch, notably 4x64, 2x128, 1x256 and 32x32, and has made the modified apgsearch available here on the LifeWiki.

Here's the diff against a vanilla copy of apgsearch-2015-05-25.py, showing the juicy bits:

Code: Select all

--- apgsearch-2015-05-25-vanilla.py     2017-06-30 11:07:46.918428600 +0200
+++ apgsearch-2015-05-25-wwei23.py      2017-06-30 11:03:10.075594100 +0200
@@ -51,6 +51,7 @@
 import datetime
 import os
 import urllib2
+import RANDOM

 def get_server_address():
     # Should be 'http://catagolue.appspot.com' for the released version,
@@ -117,7 +118,7 @@

     try:

-        payload = authenticate(payosha256_key, operation_name)
+        payload = authenticate("#anon", operation_name)

         if payload is None:
             return 1
@@ -165,6 +166,8 @@
     else:
         d = 0

+
+
     for j in xrange(32):

         t = ord(s[j])
@@ -172,9 +175,27 @@
         for k in xrange(8):

             if (sym == '8x32'):
+
                 x = k + 8*(j % 4)
                 y = int(j / 4)
+
+            elif (sym == '4x64'):
+
+                x = k + 8*(j % 8)
+                y = int(j / 8)
+
+            elif (sym == '2x128'):
+
+                x = k + 8*(j % 16)
+                y = int(j / 16)
+
+            elif (sym == '1x256'):
+
+                x = k + 8*(j % 32)
+                y = int(j / 32)
+
             else:
+
                 x = k + 8*(j % 2)
                 y = int(j / 2)

@@ -185,6 +206,15 @@
                     thesoup.append(x)
                     thesoup.append(y)

+                    if (sym == '32x32'):
+
+                        thesoup.append(x+16)
+                        thesoup.append(y)
+                        thesoup.append(x)
+                        thesoup.append(y+16)
+                        thesoup.append(x+16)
+                        thesoup.append(y+16)
+
                 elif (sym == 'D4_x1'):

                     thesoup.append(y)
@@ -2645,7 +2675,7 @@
     orignumber = min(orignumber, 100000000)
     number = orignumber
     initpos = 0
-    if symmstring not in ["8x32", "C1", "C2_1", "C2_2", "C2_4", "C4_1", "C4_4", "D2_+1", "D2_+2", "D2_x", "D4_+1", "D4_+2", "D4_+4", "D4_x1", "D4_x4", "D8_1", "D8_4"]:
+    if symmstring not in ["32x32", "1x256", "2x128", "4x64", "8x32", "C1", "C2_1", "C2_2", "C2_4", "C4_1", "C4_4", "D2_+1", "D2_+2", "D2_x", "D4_+1", "D4_+2", "D4_+4", "D4_x1", "D4_x4", "D8_1", "D8_4"]:
         g.exit(symmstring+" is not a valid symmetry option")

     quitapg = False
@@ -2757,7 +2787,7 @@

     g.new("Symmetry test")

-    symmetries = [["C1", "8x32"],
+    symmetries = [["32x32", "C1", "8x32", "4x64", "2x128", "1x256"],
                   ["C2_1", "C2_2", "C2_4"],
                   ["C4_1", "C4_4"],
                   ["D2_+1", "D2_+2", "D2_x"],
This should be straightforward to integrate into Aidan's hacked apgsearch supporting semi-totalistic rules. Integration of these into apgsearch 3.1 might be more involved, I haven't looked at how it operates under the hood yet. :)

If anyone else also wants to search these symmetries, please use the above modifications to ensure that soups are generated the same way, to ensure reproducibility / compatibility of results. (Also, to ensure Catagolue will produce the right sample soups if/when it gains the ability to handle these symmetries natively.)
If you speak, your speech must be better than your silence would have been. — Arabian proverb

Catagolue: Apple Bottom • Life Wiki: Apple Bottom • Twitter: @_AppleBottom_

Proud member of the Pattern Raiders!

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

Re: Hacking apgsearch

Post by Saka » July 1st, 2017, 8:55 am

Maybe someone could make an apgsearch for LTL. But since LTL is on a bounded grid, the APGsearch will have to run fewer soups at a time. Slower, but hope it can still be done.

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

Re: Hacking apgsearch

Post by drc » July 3rd, 2017, 3:17 am

It seems like PATHOLOGICAL objects appear frequently when spaceships form really close really quickly:

Code: Select all

x = 16, y = 16, rule = B3-kq4j/S2-in34q
obbobobbobooobob$
bbbbobobbooobbbo$
bobbbobbbbooooob$
obbbbbooobboobbo$
boobobbobbbbbobb$
bbobooobobbbbbbb$
bobboboooobbbbob$
ooboboboooooboob$
obboboboobooobbo$
bbooobbooobboooo$
boooobbbbboboooo$
bboooobbobbbobob$
ooooboobbboooooo$
oobooooooobobobb$
oobbbboooobobbbb$
oobobbooboooobbb!

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

Re: Hacking apgsearch

Post by drc » July 18th, 2017, 8:52 pm

Ok, apgsearch behaves REALLY weirdly with B356/S234k for no discernable reason. It's non-explosive, but it always forms a big square and doesn't let me stop the script in Golly sometimes.
h3qiTOt.png
h3qiTOt.png (36.16 KiB) Viewed 284 times
wP46Gm6.png
wP46Gm6.png (77.09 KiB) Viewed 284 times

User avatar
Apple Bottom
Posts: 1034
Joined: July 27th, 2015, 2:06 pm
Contact:

Re: Hacking apgsearch

Post by Apple Bottom » July 19th, 2017, 6:00 am

drc wrote:Ok, apgsearch behaves REALLY weirdly with B356/S234k for no discernable reason. It's non-explosive, but it always forms a big square and doesn't let me stop the script in Golly sometimes.
Works for me -- it's just really, REALLY slow to search[1], and takes a fair amount of memory as well.

1. Fifteen minutes in and with 7.5 GiB of RAM consumed, it's still in the error-correcting phase for the first batch of soups. In any case I got a hunch that the slowness isn't directly due to apgsearch, but rather to Golly.

I also got a hunch that this might go away (and that soup-searching non-totalistic rules might become faster in general) if apgsearch was further modified to natively support these rules instead of relying on custom rule tables.

After all, the only reason for using custom rule tables was Golly's lack of native support for non-totalistic rules prior to version 2.8, right?
If you speak, your speech must be better than your silence would have been. — Arabian proverb

Catagolue: Apple Bottom • Life Wiki: Apple Bottom • Twitter: @_AppleBottom_

Proud member of the Pattern Raiders!

wwei23

Re: Hacking apgsearch

Post by wwei23 » July 22nd, 2017, 11:03 am

drc wrote:Ok, apgsearch behaves REALLY weirdly with B356/S234k for no discernable reason. It's non-explosive, but it always forms a big square and doesn't let me stop the script in Golly sometimes.
Image
Image
???
B35/S23 is explosive. I see no reason that B356/S234k isn't.

wwei23

Re: Hacking apgsearch

Post by wwei23 » July 22nd, 2017, 11:51 am

72c20e wrote:I live in china,so I can't open catalogue. Can I make my apgmera to send results to a census on the LAN instead of catalogue?
Not a problem. You said you couldn't open cataLOGue, but maybe if you tried cataGOLue instead?

User avatar
PHPBB12345
Posts: 1096
Joined: August 5th, 2015, 11:55 pm
Contact:

Re: Hacking apgsearch

Post by PHPBB12345 » July 22nd, 2017, 11:28 pm

wwei23 wrote:
72c20e wrote:I live in china,so I can't open catalogue. Can I make my apgmera to send results to a census on the LAN instead of catalogue?
Not a problem. You said you couldn't open cataLOGue, but maybe if you tried cataGOLue instead?
I can't open cataGOLue.

Post Reply