Thread for Your Accidental Discoveries that Aren't in CGOL

For discussion of other cellular automata.
A for awesome
Posts: 2286
Joined: September 13th, 2014, 5:36 pm
Location: Pembina University, Home of the Gliders
Contact:

Re: Thread for Your Accidental Discoveries that Aren't in CGOL

What I think is a new p12 oscillator in JustFriends:

Code: Select all

x = 6, y = 8, rule = JustFriends
4bo$4bo$b2o$4b2o2$2bobo$o3bo$o3bo!
praosylen#5847 (Discord)

x₁=ηx
V*_η=c²√(Λη)
K=(Λu²)/2
Pₐ=1−1/(∫^∞_t₀(p(t)ˡ⁽ᵗ⁾)dt)

$$x_1=\eta x$$
$$V^*_\eta=c^2\sqrt{\Lambda\eta}$$
$$K=\frac{\Lambda u^2}2$$
$$P_a=1-\frac1{\int^\infty_{t_0}p(t)^{l(t)}dt}$$

velcrorex
Posts: 339
Joined: November 1st, 2009, 1:33 pm

Re: Thread for Your Accidental Discoveries that Aren't in CGOL

p238 oscillator in B367/S2457

Code: Select all

x = 7, y = 8, rule = B367/S2457
2bo$ob5o$b6o$o2b4o$o2b4o$b6o$ob5o$2bo! -Josh Ball. A for awesome Posts: 2286 Joined: September 13th, 2014, 5:36 pm Location: Pembina University, Home of the Gliders Contact: Re: Thread for Your Accidental Discoveries that Aren't in CGOL 4-cell methuselah lasts 3851 gens and produces a 2479-cell SL: Code: Select all x = 3, y = 4, rule = B2-a5_S135678 bo$bo$2bo$o!

praosylen#5847 (Discord)

x₁=ηx
V*_η=c²√(Λη)
K=(Λu²)/2
Pₐ=1−1/(∫^∞_t₀(p(t)ˡ⁽ᵗ⁾)dt)

$$x_1=\eta x$$
$$V^*_\eta=c^2\sqrt{\Lambda\eta}$$
$$K=\frac{\Lambda u^2}2$$
$$P_a=1-\frac1{\int^\infty_{t_0}p(t)^{l(t)}dt}$$

drc
Posts: 1664
Joined: December 3rd, 2015, 4:11 pm
Location: creating useless things in OCA

Re: Thread for Your Accidental Discoveries that Aren't in CGOL

A for awesome wrote:4-cell methuselah lasts 3851 gens and produces a 2479-cell SL:

Code: Select all

x = 3, y = 4, rule = B2-a5_S135678
bo$bo$2bo$o!  RULE? \100\97\110\105 A for awesome Posts: 2286 Joined: September 13th, 2014, 5:36 pm Location: Pembina University, Home of the Gliders Contact: Re: Thread for Your Accidental Discoveries that Aren't in CGOL drc wrote:RULE? Here: Code: Select all @RULE B2-a5_S135678 @TABLE n_states:2 neighborhood:Moore symmetries:rotate8reflect 0,1,0,1,0,0,0,0,0,1 0,1,0,0,1,0,0,0,0,1 0,1,0,0,0,1,0,0,0,1 0,0,0,0,1,1,1,1,1,1 0,0,0,1,0,1,1,1,1,1 0,0,0,1,1,0,1,1,1,1 0,0,0,1,1,1,0,1,1,1 0,0,0,1,1,1,1,0,1,1 0,0,0,1,1,1,1,1,0,1 0,0,1,0,1,0,1,1,1,1 0,0,1,0,1,1,0,1,1,1 0,0,1,1,0,1,0,1,1,1 0,1,0,1,0,1,0,1,1,1 1,0,0,0,0,0,0,0,0,0 1,1,1,0,0,0,0,0,0,0 1,1,0,1,0,0,0,0,0,0 1,1,0,0,1,0,0,0,0,0 1,1,0,0,0,1,0,0,0,0 1,1,1,1,1,0,0,0,0,0 1,1,1,1,0,1,0,0,0,0 1,1,1,1,0,0,1,0,0,0 1,1,1,0,1,1,0,0,0,0 1,1,1,0,1,0,1,0,0,0 1,1,1,0,1,0,0,1,0,0 1,1,1,0,1,0,0,0,1,0 1,1,1,0,0,1,1,0,0,0 1,1,1,0,0,1,0,1,0,0 1,1,1,0,0,1,0,0,1,0 1,1,1,0,0,0,1,1,0,0 1,1,0,1,0,1,0,1,0,0 1,0,1,0,1,0,1,0,1,0 praosylen#5847 (Discord) x₁=ηx V*_η=c²√(Λη) K=(Λu²)/2 Pₐ=1−1/(∫^∞_t₀(p(t)ˡ⁽ᵗ⁾)dt) $$x_1=\eta x$$ $$V^*_\eta=c^2\sqrt{\Lambda\eta}$$ $$K=\frac{\Lambda u^2}2$$ $$P_a=1-\frac1{\int^\infty_{t_0}p(t)^{l(t)}dt}$$ dvgrn Moderator Posts: 7552 Joined: May 17th, 2009, 11:00 pm Location: Madison, WI Contact: Re: Thread for Your Accidental Discoveries that Aren't in CGOL A for awesome wrote: drc wrote:RULE? Here: Code: Select all @RULE B2-a5_S135678... To generate a rule table for any standard Hensel neighbors2-format rule, just paste the rule string into this script. The rules are generated automatically, so they're not quite as efficient as the above specification -- 47 lines instead of 31, in this case -- but they're a little easier to understand, with labeled sections for birth and survival and death transitions. With any luck Golly will eventually support Hensel's neighbors2 rule format, and then the script won't be necessary. Meanwhile, please let me know if you run into any problems with the rule-generator script. If there are bugs, I'd like to know sooner rather than later! A for awesome Posts: 2286 Joined: September 13th, 2014, 5:36 pm Location: Pembina University, Home of the Gliders Contact: Re: Thread for Your Accidental Discoveries that Aren't in CGOL A microreflector (repeat time 17) in a non-totalistic rule: Code: Select all x = 14, y = 13, rule = B2ce3ai_S23 8b2o$8b2o2$9b2o$9b2ob2o$12b2o3$2o2b2o$2o2b2o$9bo$8bobo$8bobo!

I think this rule might be omniperiodic. The only true periods I haven't seen are 7, 11-12, and 14-15.
praosylen#5847 (Discord)

x₁=ηx
V*_η=c²√(Λη)
K=(Λu²)/2
Pₐ=1−1/(∫^∞_t₀(p(t)ˡ⁽ᵗ⁾)dt)

$$x_1=\eta x$$
$$V^*_\eta=c^2\sqrt{\Lambda\eta}$$
$$K=\frac{\Lambda u^2}2$$
$$P_a=1-\frac1{\int^\infty_{t_0}p(t)^{l(t)}dt}$$

drc
Posts: 1664
Joined: December 3rd, 2015, 4:11 pm
Location: creating useless things in OCA

Re: Thread for Your Accidental Discoveries that Aren't in CGOL

A for awesome wrote:A microreflector (repeat time 17) in a non-totalistic rule:

Code: Select all

x = 14, y = 13, rule = B2ce3ai_S23
8b2o$8b2o2$9b2o$9b2ob2o$12b2o3$2o2b2o$2o2b2o$9bo$8bobo$8bobo!  I think this rule might be omniperiodic. The only true periods I haven't seen are 7, 11-12, and 14-15. only 11 and 15 left till omniperiodicidity (o.O) \100\97\110\105 A for awesome Posts: 2286 Joined: September 13th, 2014, 5:36 pm Location: Pembina University, Home of the Gliders Contact: Re: Thread for Your Accidental Discoveries that Aren't in CGOL A p26 gun: Code: Select all x = 13, y = 14, rule = B2ce3ai_S23 3b2o3b2o$3b2o3b2o2$2b2o2bo2b2o$2b2obobob2o$5bobo$6bo4$b2o7b2o$2bo7bo$o 11bo$2o9b2o!

Edit: A glider duplicator with an unfortunate repeat time of 67:

Code: Select all

x = 13, y = 56, rule = B2ce3ai_S23
9b2o$9b2o$7bo4bo$2b2o3b2o2b2o$2b2o5b2o4$3b2o$3b2o2$2o$o$2bo$b2o3$4b2o$
4b2o3bo$8bobo$8bobo32$8b3o$8bobo2$9bo!  I can't figure out how to separate those gliders, though. praosylen#5847 (Discord) x₁=ηx V*_η=c²√(Λη) K=(Λu²)/2 Pₐ=1−1/(∫^∞_t₀(p(t)ˡ⁽ᵗ⁾)dt) $$x_1=\eta x$$ $$V^*_\eta=c^2\sqrt{\Lambda\eta}$$ $$K=\frac{\Lambda u^2}2$$ $$P_a=1-\frac1{\int^\infty_{t_0}p(t)^{l(t)}dt}$$ Sphenocorona Posts: 510 Joined: April 9th, 2013, 11:03 pm Re: Thread for Your Accidental Discoveries that Aren't in CGOL Here's some non-trivial oscillators for all periods from 2 to 18 in 2ce3ai, plus a few larger periods (such as 43): Code: Select all x = 170, y = 121, rule = B2ce3ai_S23 139b2o$139b2o$obobo12bobo$20bo122b2o$4bo29bobo8b2o3b2o23bo2bo45bo2bobo 13b2o$19bo26bobo2bo30bo59bo$obobo27bo3bo6b3o2b2o2b2o21bo2bo3bo41bo2bo 3bo$20bo22bo2bo3bo2bo83b2o5b2o$o10bo5bobo12bobobo8bo5bo23bo2bobobo4bob obobobobo5bobobobobobobobo6bo4bo8bo5bo$23b2o19b2o4b2o84bo2bobobo2bo$ob obo6bo11bo12bo14bob2o20bo6bo41bo2bo3bo4b2o2b3o2b2o$25bo24bo2b2o83bo5bo
$22b3o7bobo15bo24bo6bo41bo4bobo6b7o$22bo2bo22b2o2bo$24bo21b2o3b2o87b4o$23b2o21bo2bo90bo2bo$48b2o4$98bo2bo$o18b2o77b4o$4bo6b2o3b2o2bo25bo$o3b o6bo2b2o2bo27bo49b7o$13bo4bo11bo2bobobo25b2o10bo2bobobo9b2o2bo5bo$obob o8bobo3bo35b2o3b2o2bo27bo2bo2b3o2b2o$14bo4bo10bo2bo3bo4b2o5b2o4bo2b2o
2bo12bo2bo15bo2bo3bo2bo$4bo9bo2b2o24bo5bo7bo2bo2bo29bo2bo5bo$12bo2b2o
3bo9bo2bo3bo3bo2bobobo2bo4bo3bob2o11bo2bobo10b2o2b2o5b2o$4bo7b2o5b2o 20b2o2b3o2b2o4bo4bobob2o24bo2bo$30bo2bo3bo5bo5bo7bo4bo2b2o8bo6bo5b2obo
bob2o$43b7o5bobo4bo26bobobo2bo$30bo2bobobo17b2o3b2o13bo2bobo8bobobob2o
5bo$45b4o9bobo2bo24b2obo2bo2bo3b2o53b2o$45bo2bo9b2o2bob2o25b2o2b2o59bo
2bo$61b2obo28bo2bo57b2o2b2o4b2o$64bo28b2o56b2obo2bo6b2o$64b2o86bobobo$
152bobob2o$142b2o3b2o2b2obobo$124bobobo2bo8b2o2b2o2bo5bo2bo$obobo14b2o 71b2o44b2o6bo7b2o2b2o5b2o$15b2o2bo2bo20b2o47b2o4b2o28bo2bo7bo7bo8bo2bo
5bo$o14b2obo2b2o20bo2bo51b2o37bo8b2o9bo2bobobo2bo$18bo11bo2bo11b2o28bo
2bobobo8b4o31bo4bo5b2ob2o5bob2o4bo2bo2b3o2b2o$obobo10b4ob2o69bo2bo2bo 43bo4bo2b2o4b2o2bo5bo$13b2o5bo9bo2bo8b2o5b2o24bo2bo18bo26bo6bo7bo2b2o
2bo12b7o$4bo6bo2bo7bo20bo5bo45bo43b2o3b2o2bo$11b2o8b2o7bo2bo7bo2bo3bo
2bo23bo2bobobo9b2o5b2o23bobobo2bo15b2o12b4o$obobo36b2o2b3o2b2o41bo5bo 61bo2bo$30bo2bo9bo5bo25bo2bo3bo8bo2bobobo2bo$43b7o41b2o2b3o2b2o$30bo2b
o41bo2bobo12bo5bo$45b4o44b7o$45bo2bo96bo2bo19b2o$95b4o46b4o17bo2bo$95b
o2bo65bob2o$143b7o12bob2o$48bo2bo91bo5bo10bob2o$48b4o89b2o2b3o2b2o6bob 2o$141bo2bobobo2bo4bob2o$2bobo41b7o71bobobo2bobobo7bo5bo4bob2o$46bo5bo
89b2o5b2o3b2o$o43b2o2b3o2b2o73bo6bo$30bo2bobobo6bo2bobobo2bo$obobo7bob obobo27bo5bo73bobo2bobo$30bo6bo3b2o2b2o5b2o$o3bo36b2o12bo72bo2bo13b2o 5b2o$30bo2bobo17b3o4bobobobobobobobo71bo5bo$obo39b3o79bobobo2bobobo8bo 2bobobo2bo$30bo2bo8bo12b2o3bobobobobobobobo69b2o2b3o2b2o$44b2o5b2o2b2o 89bo5bo$30bo2bobobo7bo5bo94b7o$43bo2bobobo2bo$43b2o2b3o2b2o94b4o$45bo 5bo96bo2bo$45b7o2$47b4o$47bo2bo2$obobo8b2o5b2o24bo2bo46b2o53b2o$13bo3b
2o2bo24b4o46b2o53bo2bo$4bo10b2o2bo129b2o2b2o$14bo5bo9bo2bobobo6b7o23bo
2bobobo13b4o25bobobo2bobobo10b2obo2bo6b2o$4bo9bobo3bo23bo5bo44bo2bo48b obobo7b2o$11b2ob2o4bob2o4bobo6bo4b2o2b3o2b2o21bo6bo46bo2bo3bo11bobob2o
$4bo6b2o6bo3bo18bo2bobobo2bo93b2obobo$16b2obobo8bo4bo8bo5bo23bo4bo10b
2o6b2o26bobo2bobobo13bo2bo$4bo11bo2bob2o20b2o5b2o36bo2bo6bo50b2o2b2o5b 2o$18b2o10bo6bo36bo4bo8b2o2b2obobo2bo27bo2bo3bo15bo2bo5bo$90bo3b3o2b2o 51bo2bobobo2bo$30bo2bobobo6b2o5b2o21bo4bo10b2o6bo25bobobo2bobobo14bo2b
o2b3o2b2o$45bo5bo41b2o2b2o51b2o2bo5bo$43bo2bobobo2bo39b2o59b7o$43b2o2b 3o2b2o$45bo5bo104b4o$45b7o104bo2bo2$47b4o$47bo2bo$obobo10b2o2b2o$15b2o 2b2o$o3bo$13b7o104b2o$obobo8bo5bo104bo2bo2b2o$11b2o2b3o2b2o100b2o2b2o 2b2o$o3bo6bo2bo3bo2bo97b2obo2bo$13bo5bo80bo6bobobo8bobobo7b2o$obobo7b
2o5b2o83bo15bobobo7b2o$25bobobobobobobobo60bo3bo6bo7b2obobo$15b2o105bo
2bo$15b2o8bobobobobobobobo60bobobo4bo12b2o2b2o2bo2b2o$124bo2bobobobo$25bobobobobobobobo64bo6bo13bo2bo3bo2bo$123bo2bo2b3o2b2o$25bobobobobobo bobo64bo2bobobo11b2o2bo5bo$127b7o2$129b4o$129bo2bo!
That little p10 oscillator with the isolated pip spark was probably the most important finding in all of this, it provided an extremely easily manipulated ignition source for restarting the cycle over once any smoke clears out of the way. It's also very easy to phase shift.

Now that we know this rule is omniperiodic, the next problem is building circuits (or finding new spaceships)...

drc
Posts: 1664
Joined: December 3rd, 2015, 4:11 pm
Location: creating useless things in OCA

Re: Thread for Your Accidental Discoveries that Aren't in CGOL

Sphenocorona wrote:Here's some non-trivial oscillators for all periods from 2 to 18 in 2ce3ai, plus a few larger periods (such as 43):

Code: Select all

x = 170, y = 121, rule = B2ce3ai_S23
139b2o$139b2o$obobo12bobo$20bo122b2o$4bo29bobo8b2o3b2o23bo2bo45bo2bobo
13b2o$19bo26bobo2bo30bo59bo$obobo27bo3bo6b3o2b2o2b2o21bo2bo3bo41bo2bo
3bo$20bo22bo2bo3bo2bo83b2o5b2o$o10bo5bobo12bobobo8bo5bo23bo2bobobo4bob
obobobobo5bobobobobobobobo6bo4bo8bo5bo$23b2o19b2o4b2o84bo2bobobo2bo$ob
obo6bo11bo12bo14bob2o20bo6bo41bo2bo3bo4b2o2b3o2b2o$25bo24bo2b2o83bo5bo$22b3o7bobo15bo24bo6bo41bo4bobo6b7o$22bo2bo22b2o2bo$24bo21b2o3b2o87b4o
$23b2o21bo2bo90bo2bo$48b2o4$98bo2bo$o18b2o77b4o$4bo6b2o3b2o2bo25bo$o3b
o6bo2b2o2bo27bo49b7o$13bo4bo11bo2bobobo25b2o10bo2bobobo9b2o2bo5bo$obob
o8bobo3bo35b2o3b2o2bo27bo2bo2b3o2b2o$14bo4bo10bo2bo3bo4b2o5b2o4bo2b2o 2bo12bo2bo15bo2bo3bo2bo$4bo9bo2b2o24bo5bo7bo2bo2bo29bo2bo5bo$12bo2b2o 3bo9bo2bo3bo3bo2bobobo2bo4bo3bob2o11bo2bobo10b2o2b2o5b2o$4bo7b2o5b2o
20b2o2b3o2b2o4bo4bobob2o24bo2bo$30bo2bo3bo5bo5bo7bo4bo2b2o8bo6bo5b2obo bob2o$43b7o5bobo4bo26bobobo2bo$30bo2bobobo17b2o3b2o13bo2bobo8bobobob2o 5bo$45b4o9bobo2bo24b2obo2bo2bo3b2o53b2o$45bo2bo9b2o2bob2o25b2o2b2o59bo 2bo$61b2obo28bo2bo57b2o2b2o4b2o$64bo28b2o56b2obo2bo6b2o$64b2o86bobobo$152bobob2o$142b2o3b2o2b2obobo$124bobobo2bo8b2o2b2o2bo5bo2bo$obobo14b2o
71b2o44b2o6bo7b2o2b2o5b2o$15b2o2bo2bo20b2o47b2o4b2o28bo2bo7bo7bo8bo2bo 5bo$o14b2obo2b2o20bo2bo51b2o37bo8b2o9bo2bobobo2bo$18bo11bo2bo11b2o28bo 2bobobo8b4o31bo4bo5b2ob2o5bob2o4bo2bo2b3o2b2o$obobo10b4ob2o69bo2bo2bo
43bo4bo2b2o4b2o2bo5bo$13b2o5bo9bo2bo8b2o5b2o24bo2bo18bo26bo6bo7bo2b2o 2bo12b7o$4bo6bo2bo7bo20bo5bo45bo43b2o3b2o2bo$11b2o8b2o7bo2bo7bo2bo3bo 2bo23bo2bobobo9b2o5b2o23bobobo2bo15b2o12b4o$obobo36b2o2b3o2b2o41bo5bo
61bo2bo$30bo2bo9bo5bo25bo2bo3bo8bo2bobobo2bo$43b7o41b2o2b3o2b2o$30bo2b o41bo2bobo12bo5bo$45b4o44b7o$45bo2bo96bo2bo19b2o$95b4o46b4o17bo2bo$95b o2bo65bob2o$143b7o12bob2o$48bo2bo91bo5bo10bob2o$48b4o89b2o2b3o2b2o6bob
2o$141bo2bobobo2bo4bob2o$2bobo41b7o71bobobo2bobobo7bo5bo4bob2o$46bo5bo 89b2o5b2o3b2o$o43b2o2b3o2b2o73bo6bo$30bo2bobobo6bo2bobobo2bo$obobo7bob
obobo27bo5bo73bobo2bobo$30bo6bo3b2o2b2o5b2o$o3bo36b2o12bo72bo2bo13b2o
5b2o$30bo2bobo17b3o4bobobobobobobobo71bo5bo$obo39b3o79bobobo2bobobo8bo
2bobobo2bo$30bo2bo8bo12b2o3bobobobobobobobo69b2o2b3o2b2o$44b2o5b2o2b2o
89bo5bo$30bo2bobobo7bo5bo94b7o$43bo2bobobo2bo$43b2o2b3o2b2o94b4o$45bo
5bo96bo2bo$45b7o2$47b4o$47bo2bo2$obobo8b2o5b2o24bo2bo46b2o53b2o$13bo3b 2o2bo24b4o46b2o53bo2bo$4bo10b2o2bo129b2o2b2o$14bo5bo9bo2bobobo6b7o23bo 2bobobo13b4o25bobobo2bobobo10b2obo2bo6b2o$4bo9bobo3bo23bo5bo44bo2bo48b
obobo7b2o$11b2ob2o4bob2o4bobo6bo4b2o2b3o2b2o21bo6bo46bo2bo3bo11bobob2o$4bo6b2o6bo3bo18bo2bobobo2bo93b2obobo$16b2obobo8bo4bo8bo5bo23bo4bo10b 2o6b2o26bobo2bobobo13bo2bo$4bo11bo2bob2o20b2o5b2o36bo2bo6bo50b2o2b2o5b
2o$18b2o10bo6bo36bo4bo8b2o2b2obobo2bo27bo2bo3bo15bo2bo5bo$90bo3b3o2b2o
51bo2bobobo2bo$30bo2bobobo6b2o5b2o21bo4bo10b2o6bo25bobobo2bobobo14bo2b o2b3o2b2o$45bo5bo41b2o2b2o51b2o2bo5bo$43bo2bobobo2bo39b2o59b7o$43b2o2b
3o2b2o$45bo5bo104b4o$45b7o104bo2bo2$47b4o$47bo2bo$obobo10b2o2b2o$15b2o
2b2o$o3bo$13b7o104b2o$obobo8bo5bo104bo2bo2b2o$11b2o2b3o2b2o100b2o2b2o
2b2o$o3bo6bo2bo3bo2bo97b2obo2bo$13bo5bo80bo6bobobo8bobobo7b2o$obobo7b 2o5b2o83bo15bobobo7b2o$25bobobobobobobobo60bo3bo6bo7b2obobo$15b2o105bo 2bo$15b2o8bobobobobobobobo60bobobo4bo12b2o2b2o2bo2b2o$124bo2bobobobo$
25bobobobobobobobo64bo6bo13bo2bo3bo2bo$123bo2bo2b3o2b2o$25bobobobobobo
bobo64bo2bobobo11b2o2bo5bo$127b7o2$129b4o$129bo2bo! That little p10 oscillator with the isolated pip spark was probably the most important finding in all of this, it provided an extremely easily manipulated ignition source for restarting the cycle over once any smoke clears out of the way. It's also very easy to phase shift. Now that we know this rule is omniperiodic, the next problem is building circuits (or finding new spaceships)... I think we should make a list of rules that are omniperiodic: B2ce3ai/S23 To do: B3/S23 (I honestly don't know how litely. B3/S234 (probably) \100\97\110\105 BlinkerSpawn Posts: 1978 Joined: November 8th, 2014, 8:48 pm Location: Getting a snacker from R-Bee's Re: Thread for Your Accidental Discoveries that Aren't in CGOL drc wrote: I think we should make a list of rules that are omniperiodic: B2ce3ai/S23 To do: B3/S23 (I honestly don't know how litely. B3/S234 (probably) I hope you're limiting that to rules close to Life, because there's tons more than those. B3/S234 was proven omniperiodic some time ago, just check the dedicated thread I bumped some weeks ago. LifeWiki: Like Wikipedia but with more spaceships. [citation needed] drc Posts: 1664 Joined: December 3rd, 2015, 4:11 pm Location: creating useless things in OCA Re: Thread for Your Accidental Discoveries that Aren't in CGOL BlinkerSpawn wrote: drc wrote: I think we should make a list of rules that are omniperiodic: B2ce3ai/S23 To do: B3/S23 (I honestly don't know how litely. B3/S234 (probably) I hope you're limiting that to rules close to Life, because there's tons more than those. B3/S234 was proven omniperiodic some time ago, just check the dedicated thread I bumped some weeks ago. I didn't know about those. \100\97\110\105 muzik Posts: 3943 Joined: January 28th, 2016, 2:47 pm Location: Scotland Re: Thread for Your Accidental Discoveries that Aren't in CGOL Has this HighLife replicator-based ship been discovered before? Code: Select all x = 12, y = 15, rule = B36/S23 6bobo$5bo2bo$6bobo5$2b2o2$9b3o2$3o4bo$bobo3bo$2b2o$3bo!  EDIT: Yep, it has. Disregard this post Bored of using the Moore neighbourhood for everything? Introducing the Range-2 von Neumann isotropic non-totalistic rulespace! A for awesome Posts: 2286 Joined: September 13th, 2014, 5:36 pm Location: Pembina University, Home of the Gliders Contact: Re: Thread for Your Accidental Discoveries that Aren't in CGOL Code: Select all x = 22, y = 22, rule = B3-kq4j_S23 7b2o$7b2o$10b2o$9bo$10bo3$6bo8b2o3b2o$4b2o9bobo2b2o$5b2o8bo3$6bo8b2o$
2o2bobo9b2o$2o3b2o8bo3$11bo$12bo$10b2o$13b2o$13b2o!

praosylen#5847 (Discord)

x₁=ηx
V*_η=c²√(Λη)
K=(Λu²)/2
Pₐ=1−1/(∫^∞_t₀(p(t)ˡ⁽ᵗ⁾)dt)

$$x_1=\eta x$$
$$V^*_\eta=c^2\sqrt{\Lambda\eta}$$
$$K=\frac{\Lambda u^2}2$$
$$P_a=1-\frac1{\int^\infty_{t_0}p(t)^{l(t)}dt}$$

drc
Posts: 1664
Joined: December 3rd, 2015, 4:11 pm
Location: creating useless things in OCA

Re: Thread for Your Accidental Discoveries that Aren't in CGOL

A for awesome wrote:

Code: Select all

x = 22, y = 22, rule = B3-kq4j_S23
7b2o$7b2o$10b2o$9bo$10bo3$6bo8b2o3b2o$4b2o9bobo2b2o$5b2o8bo3$6bo8b2o$2o2bobo9b2o$2o3b2o8bo3$11bo$12bo$10b2o$13b2o$13b2o!  Repeat time is 5: Code: Select all x = 8, y = 8, rule = B3-kq4j_S23 2o4b2o$2o4b2o2$2bobo$2b2o$3bo$2o4b2o$2o4b2o!  \100\97\110\105 muzik Posts: 3943 Joined: January 28th, 2016, 2:47 pm Location: Scotland Re: Thread for Your Accidental Discoveries that Aren't in CGOL Awesome. Code: Select all x = 30, y = 23, rule = cb2 b2o3b2o$o2bobo2bo$4bo$2b5o18$27b2o$26bo2bo!

Bored of using the Moore neighbourhood for everything? Introducing the Range-2 von Neumann isotropic non-totalistic rulespace!

drc
Posts: 1664
Joined: December 3rd, 2015, 4:11 pm
Location: creating useless things in OCA

Re: Thread for Your Accidental Discoveries that Aren't in CGOL

B2aen/S1e2i is similar to cb2, it's pretty cool. Despite what you might think at first, it is NOT the same as cb2.

In cb2, this pattern turns into a moon, but in B2aen/S1e2i is a growing rake, front c, back c/2:

Code: Select all

x = 6, y = 6, rule = B2aen_S1e2i
2b2o$bo2bo$o4bo$3bo$3bo$3bo!  A p6 oscillator: Code: Select all x = 4, y = 4, rule = B2aen_S1e2i o$bo$2bo$3bo!

A p6 flip-flop glide-symmetric rake:

Code: Select all

x = 7, y = 3, rule = B2aen_S1e2i
b2ob2o$o3bobo$4bo!

Tagalongs:

Code: Select all

x = 13, y = 5, rule = B2aen_S1e2i
b2o7b2o$o2bo5bo2bo$8bo$bo$8bo!

P4 rake:

Code: Select all

x = 8, y = 4, rule = B2aen_S1e2i
b2o$o2bo$5b2o$7bo!  P16 rake: Code: Select all x = 9, y = 11, rule = B2aen_S1e2i o$bo$2bo$3bo$4bo$5bo$6bo$7bo$8bo$8bo$7bo!  Splitter rake: Code: Select all x = 16, y = 15, rule = B2aen_S1e2i 7bo$8bo$8bo$7bo$o12bo$bo4bo5bobo$5bo9bo$15bo$12bobo$bo7b2o2bo$bo8bo$9b
o$12bo$12bo$11bo!  \100\97\110\105 muzik Posts: 3943 Joined: January 28th, 2016, 2:47 pm Location: Scotland Re: Thread for Your Accidental Discoveries that Aren't in CGOL drc wrote:B2aen/S1e2i is similar to cb2, it's pretty cool. Despite what you might think at first, it is NOT the same as cb2. In cb2, this pattern turns into a moon, but in B2aen/S1e2i is a growing rake, front c, back c/2: Code: Select all x = 6, y = 6, rule = B2aen_S1e2i 2b2o$bo2bo$o4bo$3bo$3bo$3bo!

A p6 oscillator:

Code: Select all

x = 4, y = 4, rule = B2aen_S1e2i
o$bo$2bo$3bo!  A p6 flip-flop glide-symmetric rake: Code: Select all x = 7, y = 3, rule = B2aen_S1e2i b2ob2o$o3bobo$4bo!  Tagalongs: Code: Select all x = 13, y = 5, rule = B2aen_S1e2i b2o7b2o$o2bo5bo2bo$8bo$bo$8bo!  P4 rake: Code: Select all x = 8, y = 4, rule = B2aen_S1e2i b2o$o2bo$5b2o$7bo!

P16 rake:

Code: Select all

x = 9, y = 11, rule = B2aen_S1e2i
o$bo$2bo$3bo$4bo$5bo$6bo$7bo$8bo$8bo$7bo!

Splitter rake:

Code: Select all

x = 16, y = 15, rule = B2aen_S1e2i
7bo$8bo$8bo$7bo$o12bo$bo4bo5bobo$5bo9bo$15bo$12bobo$bo7b2o2bo$bo8bo$9b o$12bo$12bo$11bo!

Can you give me the rule sheet thing?
Bored of using the Moore neighbourhood for everything? Introducing the Range-2 von Neumann isotropic non-totalistic rulespace!

drc
Posts: 1664
Joined: December 3rd, 2015, 4:11 pm
Location: creating useless things in OCA

Re: Thread for Your Accidental Discoveries that Aren't in CGOL

muzik wrote:Can you give me the rule sheet thing?

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 = { k: False for k, v in self.notationdict.iteritems() }

# 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 += "\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):

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")
Enter in any rule to auto-generate a rule table
\100\97\110\105

muzik
Posts: 3943
Joined: January 28th, 2016, 2:47 pm
Location: Scotland

Re: Thread for Your Accidental Discoveries that Aren't in CGOL

drc wrote:
muzik wrote:Can you give me the rule sheet thing?

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 = { k: False for k, v in self.notationdict.iteritems() }

# 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 += "\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):

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")
Enter in any rule to auto-generate a rule table
I'm on mobile so I can't
Bored of using the Moore neighbourhood for everything? Introducing the Range-2 von Neumann isotropic non-totalistic rulespace!

drc
Posts: 1664
Joined: December 3rd, 2015, 4:11 pm
Location: creating useless things in OCA

Re: Thread for Your Accidental Discoveries that Aren't in CGOL

3-g synth of a rake:

Code: Select all

x = 16, y = 9, rule = B2aen_S1e2i
9bo$10bo$10bo$9bo2$o12bo$bo10bo$bo10bo2bo$o12bo!  Converting moon rake into (I'll just call it the spear): Code: Select all x = 16, y = 24, rule = B2aen_S1e2i 9b2o$8bo2bob2o$15bo8$bo$o$o$bo2$bo$bo$2bo5$11bo2bo$10bo4bo!

\100\97\110\105

muzik
Posts: 3943
Joined: January 28th, 2016, 2:47 pm
Location: Scotland

Re: Thread for Your Accidental Discoveries that Aren't in CGOL

drc wrote:3-g synth of a rake:

Code: Select all

x = 16, y = 9, rule = B2aen_S1e2i
9bo$10bo$10bo$9bo2$o12bo$bo10bo$bo10bo2bo$o12bo!  Converting moon rake into (I'll just call it the spear): Code: Select all x = 16, y = 24, rule = B2aen_S1e2i 9b2o$8bo2bob2o$15bo8$bo$o$o$bo2$bo$bo$2bo5$11bo2bo$10bo4bo!

For some reason the code still isn't generating the rule properly.

Can you make the rule table thing look like the other ones?
Bored of using the Moore neighbourhood for everything? Introducing the Range-2 von Neumann isotropic non-totalistic rulespace!

drc
Posts: 1664
Joined: December 3rd, 2015, 4:11 pm
Location: creating useless things in OCA

Re: Thread for Your Accidental Discoveries that Aren't in CGOL

muzik wrote:For some reason the code still isn't generating the rule properly.

Can you make the rule table thing look like the other ones?

Code: Select all

@RULE B2aen_S1e2i

*** File autogenerated by saverule. ***

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

var a={0,1}
var b={0,1}
var c={0,1}
var d={0,1}
var e={0,1}
var f={0,1}
var g={0,1}
var h={0,1}

# Birth
0,1,1,0,0,0,0,0,0,1
0,1,0,1,0,0,0,0,0,1
0,0,1,0,0,0,1,0,0,1

# Survival
1,1,0,0,0,0,0,0,0,1
1,1,0,0,0,1,0,0,0,1

# Death
1,a,b,c,d,e,f,g,h,0

@COLORS

@ICONS

circles

\100\97\110\105

muzik
Posts: 3943
Joined: January 28th, 2016, 2:47 pm
Location: Scotland

Re: Thread for Your Accidental Discoveries that Aren't in CGOL

drc wrote:
muzik wrote:For some reason the code still isn't generating the rule properly.

Can you make the rule table thing look like the other ones?
Thanks.

Here's a puffer:

Code: Select all

x = 13, y = 19, rule = B2aen_S1e2i
4$bo$obo$bobo$2bobo$3bobo$4bobo$7bo$7bo\$6bo!

Bored of using the Moore neighbourhood for everything? Introducing the Range-2 von Neumann isotropic non-totalistic rulespace!