Thread for your script-related questions
Re: Thread for your script-related questions
I am trying to run a Python script in Golly, but it gives me this message:
Could not load the Python library
How should I install the Python library on my Windows 11 laptop?
Could not load the Python library
How should I install the Python library on my Windows 11 laptop?
Range-2 INT
R2INT's Rule Collection
Travelling Ts has surpassed LeapLife in post count, but not yet in technology.
R2INT's Rule Collection
Travelling Ts has surpassed LeapLife in post count, but not yet in technology.
Re: Thread for your script-related questions
Find the file 'python3*.dll', but replace '3*' with your version number (e.g if you have v3.13 installed, find python313.dll).R2INT wrote: August 6th, 2025, 2:49 pm I am trying to run a Python script in Golly, but it gives me this message:
Could not load the Python library
How should I install the Python library on my Windows 11 laptop?
It should be in your Python installation somewhere - mine is at C:\Users\PC\AppData\Local\Programs\Python\Python313\python313.dll, for example.
Golly should be asking you for the location of the python3* dll, so enter the file path for it.
If it does not work, then close down all instances of Golly, and find your gollyprefs file (should be at C:\Users\<username>\AppData\Roaming\Golly\GollyPrefs). Open it in Notepad, find where the python3_lib path is shown in the file, and replace it with the file path to python3*.dll. Then reopen Golly and try running the Python script again. It should work.
User:PK22
Learning miscellaneous programming languages.
Learning miscellaneous programming languages.
Re: Thread for your script-related questions
Take a look on mkstill from Bellman's program suite.
It has a very special input file but it can be easily generated by a script.
However, there is also CompleteStill from Barrister's program suite, but I' can't run this one due to my poor machine.
Both of them need compilation before use and have a README file.
For mkstill, I wrote a script to convert a pattern in LifeHistory to Bellman's mkstill program and launch it in Golly.
It's a bad idea. Prefer to launch it in a terminal/console (need some modifications before).
By the way, you will get at least the conversion function.
Here is the script : link into this forum
Edit:
Barrister is the successor of Bellman and is more friendly and efficient.
Edit2:
Here is a link to a PDF for Bellman's explanation (and mkstill so and more) : Bellman's suite Notice - PDF
Alone we go faster … Together we go further …
Avatar's pattern
My Sandbox
Bom-Bom
ℝ - ℕ = ℝ or ℕ ⊄ ℝ
Avatar's pattern
My Sandbox
Bom-Bom
ℝ - ℕ = ℝ or ℕ ⊄ ℝ
Re: Thread for your script-related questions
Does anyone use Glue?
Code: Select all
x = 31, y = 13, rule = C
8.2X2.3X.3X.X.X$8.X.X.X3.X3.X.X$8.X.X.3X.3X.X.X$8.2X2.X5.X.X.X$8.X.X.
3X.3X.3X$M2.M$4.M$M3.M$.4M$27.2M$27.M.M$29.M$29.2M! [[ AUTOSTART GPS 10 ]]
Re: Thread for your script-related questions
Probably not - HoneySearch is much faster than Glue, and when I tried to find a copy of Glue a while back so I could test it, I failed.
The only reason that Glue would be better is if it were being run on a horrible PC with one core and barely any RAM, or if you only had access to Windows without WSL - HoneySearch is memory-intensive and parallelised.
Still, it looks pretty interesting - does anyone have a copy of the source code?
User:PK22
Learning miscellaneous programming languages.
Learning miscellaneous programming languages.
Re: Thread for your script-related questions
What is D2_+1_gO1s2?
Code: Select all
x = 31, y = 13, rule = C
8.2X2.3X.3X.X.X$8.X.X.X3.X3.X.X$8.X.X.3X.3X.X.X$8.2X2.X5.X.X.X$8.X.X.
3X.3X.3X$M2.M$4.M$M3.M$.4M$27.2M$27.M.M$29.M$29.2M! [[ AUTOSTART GPS 10 ]]
Re: Thread for your script-related questions
It is essentially D2_+1, but with a gutter between the two soups, and they are also skewed from each other by 2 cells.
User:PK22
Learning miscellaneous programming languages.
Learning miscellaneous programming languages.
Re: Thread for your script-related questions
Is there one for other symmetries?
Code: Select all
x = 31, y = 13, rule = C
8.2X2.3X.3X.X.X$8.X.X.X3.X3.X.X$8.X.X.3X.3X.X.X$8.2X2.X5.X.X.X$8.X.X.
3X.3X.3X$M2.M$4.M$M3.M$.4M$27.2M$27.M.M$29.M$29.2M! [[ AUTOSTART GPS 10 ]]
Re: Thread for your script-related questions
How do I put an input into qfind and run it in visual studio code?
Please visit my rules (found on my wiki page) and contribute!
User:ThePlayzr
I have LLS and qfind.
Working on a jslife-like Travelling Ts pattern collection.
User:ThePlayzr
I have LLS and qfind.
Working on a jslife-like Travelling Ts pattern collection.
Re: Thread for your script-related questions
Put the input into vscode or put qfind into vscode?ThePlayzr wrote: August 15th, 2025, 5:55 am How do I put an input into qfind and run it in visual studio code?
Code: Select all
x = 31, y = 13, rule = C
8.2X2.3X.3X.X.X$8.X.X.X3.X3.X.X$8.X.X.3X.3X.X.X$8.2X2.X5.X.X.X$8.X.X.
3X.3X.3X$M2.M$4.M$M3.M$.4M$27.2M$27.M.M$29.M$29.2M! [[ AUTOSTART GPS 10 ]]
Re: Thread for your script-related questions
Put the input into vscode.
Please visit my rules (found on my wiki page) and contribute!
User:ThePlayzr
I have LLS and qfind.
Working on a jslife-like Travelling Ts pattern collection.
User:ThePlayzr
I have LLS and qfind.
Working on a jslife-like Travelling Ts pattern collection.
Re: Thread for your script-related questions
When trying to compile HoneySearch (by running make), I get the following command output:
What is the problem, and how can I fix it?
Code: Select all
g++ -c -Wall -Wextra -O3 -march=native -fopenmp -std=c++11 -pedantic hs.cpp -o hs.o
hs.cpp: In member function ‘void HoneyThread::setrule(std::string)’:
hs.cpp:277:42: error: use of deleted function ‘apg::base_classifier<1>& apg::base_classifier<1>::operator=(apg::base_classifier<1>&&)’
277 | cfier = apg::classifier(<, rule);
| ^
In file included from hs.cpp:2:
../lifelib/classifier.h:18:11: note: ‘apg::base_classifier<1>& apg::base_classifier<1>::operator=(apg::base_classifier<1>&&)’ is implicitly deleted because the default definition would be ill-formed:
18 | class base_classifier {
| ^~~~~~~~~~~~~~~
../lifelib/classifier.h:18:11: error: use of deleted function ‘apg::lifetree<unsigned int, 2, apg::lifemeta<unsigned int> >& apg::lifetree<unsigned int, 2, apg::lifemeta<unsigned int> >::operator=(apg::lifetree<unsigned int, 2, apg::lifemeta<unsigned int> >&&)’
In file included from ../lifelib/pattern2.h:2,
from hs.cpp:1:
../lifelib/lifetree.h:1897:11: note: ‘apg::lifetree<unsigned int, 2, apg::lifemeta<unsigned int> >& apg::lifetree<unsigned int, 2, apg::lifemeta<unsigned int> >::operator=(apg::lifetree<unsigned int, 2, apg::lifemeta<unsigned int> >&&)’ is implicitly deleted because the default definition would be ill-formed:
1897 | class lifetree : public lifetree_generic<I, N, J> {
| ^~~~~~~~
../lifelib/lifetree.h:1897:11: error: use of deleted function ‘apg::lifetree_generic<unsigned int, 2, apg::lifemeta<unsigned int> >& apg::lifetree_generic<unsigned int, 2, apg::lifemeta<unsigned int> >::operator=(const apg::lifetree_generic<unsigned int, 2, apg::lifemeta<unsigned int> >&)’
../lifelib/lifetree.h:16:11: note: ‘apg::lifetree_generic<unsigned int, 2, apg::lifemeta<unsigned int> >& apg::lifetree_generic<unsigned int, 2, apg::lifemeta<unsigned int> >::operator=(const apg::lifetree_generic<unsigned int, 2, apg::lifemeta<unsigned int> >&)’ is implicitly deleted because the default definition would be ill-formed:
16 | class lifetree_generic : public lifetree_abstract<I> {
| ^~~~~~~~~~~~~~~~
../lifelib/lifetree.h:16:11: error: use of deleted function ‘apg::hypertree<unsigned int, 4, apg::lifemeta<unsigned int>, apg::nicearray<long unsigned int, 8>, apg::lifemeta<unsigned int> >& apg::hypertree<unsigned int, 4, apg::lifemeta<unsigned int>, apg::nicearray<long unsigned int, 8>, apg::lifemeta<unsigned int> >::operator=(const apg::hypertree<unsigned int, 4, apg::lifemeta<unsigned int>, apg::nicearray<long unsigned int, 8>, apg::lifemeta<unsigned int> >&)’
In file included from ../lifelib/lifetree_abstract.h:3,
from ../lifelib/lifetree.h:4:
../lifelib/hashtrees/hypertree.h:70:11: note: ‘apg::hypertree<unsigned int, 4, apg::lifemeta<unsigned int>, apg::nicearray<long unsigned int, 8>, apg::lifemeta<unsigned int> >& apg::hypertree<unsigned int, 4, apg::lifemeta<unsigned int>, apg::nicearray<long unsigned int, 8>, apg::lifemeta<unsigned int> >::operator=(const apg::hypertree<unsigned int, 4, apg::lifemeta<unsigned int>, apg::nicearray<long unsigned int, 8>, apg::lifemeta<unsigned int> >&)’ is implicitly deleted because the default definition would be ill-formed:
70 | class hypertree {
| ^~~~~~~~~
../lifelib/hashtrees/hypertree.h:70:11: error: use of deleted function ‘apg::kivtable<apg::nicearray<long unsigned int, 8>, unsigned int, apg::lifemeta<unsigned int> >& apg::kivtable<apg::nicearray<long unsigned int, 8>, unsigned int, apg::lifemeta<unsigned int> >::operator=(const apg::kivtable<apg::nicearray<long unsigned int, 8>, unsigned int, apg::lifemeta<unsigned int> >&)’
In file included from ../lifelib/hashtrees/hypertree.h:26:
../lifelib/hashtrees/kivtable.h:58:12: note: ‘apg::kivtable<apg::nicearray<long unsigned int, 8>, unsigned int, apg::lifemeta<unsigned int> >& apg::kivtable<apg::nicearray<long unsigned int, 8>, unsigned int, apg::lifemeta<unsigned int> >:operator=(const apg::kivtable<apg::nicearray<long unsigned int, 8>, unsigned int, apg::lifemeta<unsigned int> >&)’ is implicitly deleted because the default definition would be ill-formed:
58 | struct kivtable : public hh::indextable<kiventry<K, I, V>, K, kivtable<K, I, V>> {
| ^~~~~~~~
../lifelib/hashtrees/kivtable.h:58:12: error: use of deleted function ‘hh::indextable<apg::kiventry<apg::nicearray<long unsigned int, 8>, unsigned int, apg::lifemeta<unsigned int> >, apg::nicearray<long unsigned int, 8>, apg::kivtable<apg::nicearray<long unsigned int, 8>, unsigned int, apg::lifemeta<unsigned int> >, 8>& hh::indextable<apg::kiventry<apg::nicearray<long unsigned int, 8>, unsigned int, apg::lifemeta<unsigned int> >, apg::nicearray<long unsigned int, 8>, apg::kivtable<apg::nicearray<long unsigned int, 8>, unsigned int, apg::lifemeta<unsigned int> >, 8>::operator=(const hh::indextable<apg::kiventry<apg::nicearray<long unsigned int, 8>, unsigned int, apg::lifemeta<unsigned int> >, apg::nicearray<long unsigned int, 8>, apg::kivtable<apg::nicearray<long unsigned int, 8>, unsigned int, apg::lifemeta<unsigned int> >, 8>&’
In file included from ../lifelib/hashtrees/kivtable.h:16:
../lifelib/hashtrees/../cpads/include/cpads/indextable.hpp:89:7: note: ‘hh::indextable<apg::kiventry<apg::nicearray<long unsigned int, 8>, unsigned int, apg::lifemeta<unsigned int> >, apg::nicearray<long unsigned int, 8>, apg::kivtable<apg::nicearray<long unsigned int, 8>, unsigned int, apg::lifemeta<unsigned int> >, 8>& hh::indextable<apg::kiventry<apg::nicearray<long unsigned int, 8>, unsigned int, apg::lifemeta<unsigned int> >, apg::nicearray<long unsigned int, 8>, apg::kivtable<apg::nicearray<long unsigned int, 8>, unsigned int, apg::lifemeta<unsigned int> >, 8>::operator=(const hh::indextable<apg::kiventry<apg::nicearray<long unsigned int, 8>, unsigned int, apg::lifemeta<unsigned int> >, apg::nicearray<long unsigned int, 8>, apg::kivtable<apg::nicearray<long unsigned int, 8>, unsigned int, apg::lifemeta<unsigned int> >, 8>&)’ is implicitly deleted because the default definition would be ill-formed:
89 | class indextable {
| ^~~~~~~~~~
../lifelib/hashtrees/../cpads/include/cpads/indextable.hpp:89:7: error: use of deleted function ‘hh::ivector<T, B>& hh::ivector<T, B>::operator=(const hh::ivector<T, B>&) [with T = apg::kiventry<apg::nicearray<long unsigned int, 8>, unsigned int, apg::lifemeta<unsigned int> >; int B = 8]’
In file included from ../lifelib/hashtrees/../cpads/include/cpads/indextable.hpp:2:
../lifelib/hashtrees/../cpads/include/cpads/ivector.hpp:121:20: note: declared here
121 | ivector<T, B>& operator=(ivector<T, B> const&) = delete;
| ^~~~~~~~
make: *** [makefile:31: hs.o] Error 1User:PK22
Learning miscellaneous programming languages.
Learning miscellaneous programming languages.
Re: Thread for your script-related questions
It looks like HoneySearch expects an older version of lifelib, one which does not rely upon the special aligned vectors "ivector", whose "operator=" is explicitly deleted for performance reasons. Try to downgrade lifelib to a version at least more ancient than october 27th, 2022, the date of this commit :PK22 wrote: August 15th, 2025, 5:20 pm When trying to compile HoneySearch (by running make), I get the following command output:What is the problem, and how can I fix it?Code: Select all
...
https://gitlab.com/hatsya/open-source/c ... f4967476a2
An even older version (from 2018 or 2019) might be required.
Re: Thread for your script-related questions
What are some search programs that can search for oscillators in isotropic non-totalistic rules?
Code: Select all
x = 31, y = 13, rule = C
8.2X2.3X.3X.X.X$8.X.X.X3.X3.X.X$8.X.X.3X.3X.X.X$8.2X2.X5.X.X.X$8.X.X.
3X.3X.3X$M2.M$4.M$M3.M$.4M$27.2M$27.M.M$29.M$29.2M! [[ AUTOSTART GPS 10 ]]
Re: Thread for your script-related questions
Logic Life Search and rlifesrc are great for specific periods (mostly for when they are below period 7). For a brute force search with no specific period, use apgsearch.Resu wrote: August 18th, 2025, 5:36 am What are some search programs that can search for oscillators in isotropic non-totalistic rules?
- rabbit
- Posts: 246
- Joined: March 4th, 2024, 6:00 am
- Location: Stuck inside a magician's hat. it hurts so bad
Re: Thread for your script-related questions
nbsearch2 is also a good utility for finding oscillators, works on explosive rules, and allows one to search all symmetries at once using the symmetry "All".
That's the bunny.
Check out my OCA exploration script, crule.lua!
Check out my OCA exploration script, crule.lua!
Re: Thread for your script-related questions
Is there a way to search for fuses?
Code: Select all
x = 31, y = 13, rule = C
8.2X2.3X.3X.X.X$8.X.X.X3.X3.X.X$8.X.X.3X.3X.X.X$8.2X2.X5.X.X.X$8.X.X.
3X.3X.3X$M2.M$4.M$M3.M$.4M$27.2M$27.M.M$29.M$29.2M! [[ AUTOSTART GPS 10 ]]
Re: Thread for your script-related questions
Well, Ivan Fomichev (codeholic) completed a successful fuse search for a particular type of fuse (c/2) that he was looking for to go with the pufferfish.
It's not hard to modify that search script to hunt for and collect other things. The problem is that if you allow much variety in how the fuse's wick is built, there's just absolutely no end to the number of fuses you can find very quickly. The difficulty isn't finding fuses, it's organizing them.
Re: Thread for your script-related questions
What does CatForce do?
Code: Select all
x = 31, y = 13, rule = C
8.2X2.3X.3X.X.X$8.X.X.X3.X3.X.X$8.X.X.3X.3X.X.X$8.2X2.X5.X.X.X$8.X.X.
3X.3X.3X$M2.M$4.M$M3.M$.4M$27.2M$27.M.M$29.M$29.2M! [[ AUTOSTART GPS 10 ]]
Re: Thread for your script-related questions
For questions like this, you should first read the CatForce readme and the CatForce wiki page. If there's something you're confused about after reading those, you could ask about it here, presumably with a more specific question.
-Matthias Merzenich
Re: Thread for your script-related questions
In Golly, why is there oplus/"overlay" support in Lua, but not Python? I feel like it'd be useful for both programming languages, and I rarely ever code in Lua (because it is so weird to me compared to most other programming languages).
Re: Thread for your script-related questions
What versions of gfind are there?
There seems to be a lot.
There seems to be a lot.
Code: Select all
x = 31, y = 13, rule = C
8.2X2.3X.3X.X.X$8.X.X.X3.X3.X.X$8.X.X.3X.3X.X.X$8.2X2.X5.X.X.X$8.X.X.
3X.3X.3X$M2.M$4.M$M3.M$.4M$27.2M$27.M.M$29.M$29.2M! [[ AUTOSTART GPS 10 ]]
Re: Thread for your script-related questions
Something I've noticed while running LLSSS, qfind, or other breadth-first-search programs:
Running searches with a low probability of finding results take a lot less time than searches with a higher probability, depending on the rule.
I have a theory that this is because of the amount of possible frontends, backends, pushalongs, tagalongs, wicks, etc. that can occur in that speed.
Is there a sufficient way to automatically find a rulespace that can support any spaceship with a specific speed? (For example, my estimated B2(45678)/S2(345678) space in OT for possible (2,1)c/3 ships, but less lenient)
What would that algorithm look like, if it's possible? (Note that I am not referring to finding ships themselves, just specific rule transitions that can lead to possible ships, like B2e/S4w/S5k(?) for c/3 diagonal in INT)
Running searches with a low probability of finding results take a lot less time than searches with a higher probability, depending on the rule.
I have a theory that this is because of the amount of possible frontends, backends, pushalongs, tagalongs, wicks, etc. that can occur in that speed.
Is there a sufficient way to automatically find a rulespace that can support any spaceship with a specific speed? (For example, my estimated B2(45678)/S2(345678) space in OT for possible (2,1)c/3 ships, but less lenient)
What would that algorithm look like, if it's possible? (Note that I am not referring to finding ships themselves, just specific rule transitions that can lead to possible ships, like B2e/S4w/S5k(?) for c/3 diagonal in INT)
-
NooneAtAll3
- Posts: 65
- Joined: January 29th, 2023, 3:38 am
Re: Thread for your script-related questions
does golly include endemicity analyzer?
Re: Thread for your script-related questions
This was maybe something of a policy decision by Andrew, back almost a decade ago (2016) when Lua got added to Golly 2.8.Sylvani wrote: August 23rd, 2025, 10:03 am In Golly, why is there oplus/"overlay" support in Lua, but not Python? I feel like it'd be useful for both programming languages, and I rarely ever code in Lua (because it is so weird to me compared to most other programming languages).
The idea was that Python just plain kept on being a huge hassle for a lot of users -- version 2.x going out of support in favor of 3.x, 32-bit vs. 64-bit, Microsoft Store installs vs. python.org installs vs. various competing embedded installs that show up with other software and then get in the way, admin installs vs. hidden AppData installs -- so we always had a big percentage of the user base who couldn't use Golly as it was intended to be used:
- notice something that you wish worked a little differently
- write a little script that makes Golly dance to the tune that you want
- map a keyboard shortcut to that script, maybe replacing whatever piece of functionality you don't like
Everyone's usage of Golly is a little different, so everyone should be able to customize Golly. But Python problems kept making that difficult for a lot of people.
There will never be versioning difficulties with Lua -- it's baked in to Golly and always Just Works with no additional installs.
So from the Golly Gang's point of view... if someone likes Python and has installed Python and it's working with Golly, and Python is what they write their own private helper scripts in, more power to them.
But scripts that are meant to be shared around with the community ... should ideally be written in Lua, just because they'll end up being so much more portable. So the goal with the Lua overlay was partly to gently push people Lua-ward, so that whatever cool new stuff showed up, everybody would be able to run it.
It hasn't really worked out that way -- yet. I suppose we can continue to do what we've done for the last nine years: just wait and see what happens as T approaches infinity.