Fuse finder results

For discussion of specific patterns or specific families of patterns in Conway's Game of Life, both newly-discovered and well-known.
HartmutHolzwart
Posts: 942
Joined: June 27th, 2009, 10:58 am
Location: Germany

Fuse finder results

Post by HartmutHolzwart »

This pi blinker fuse looks familiar (24c/74, if I've counted correctly):

Code: Select all

x = 192, y = 583, rule = B3/S23
2$65b3o8$65b3o8$65b3o8$65b3o8$65b3o8$65b3o8$65b3o8$65b3o8$65b3o8$65b3o
8$65b3o8$65b3o8$65b3o8$65b3o8$65b3o8$65b3o8$65b3o8$65b3o8$65b3o8$65b3o
8$65b3o8$65b3o8$65b3o8$65b3o8$65b3o8$65b3o3$76b3o$76bobo$76bobo3$65b3o
3$78bo$76b2o$78bo$75bo$75bo2b2o$76bob2o$76bo2bo$77b2o$88b2o$73b2o12b5o
$73b2o11bo3b2o$82bo2b2o2bo2bo$81b2o6b4o$80bo2bo4b3obo$81b2o$62b2o18bo
5b3o$62b2o23bo3bo$87bobo3bo$74b2o10bo3b2obo$72bo4bo7bo6bo$72bo4bo7bobo
$72bo4bo8b3o$74b2o11bo$87b2o$88bo$88bo4bo$91b2o$92bo2bo$90b4ob2o$89bob
o2b2o$88bo$89bo$91bo5$77b2o$76bo7bo$62b2o9b2ob2o2b2o2b3o$62b2o9b3o5bo
2bo2bo$72bo5bobob3o2bo$73b2o7b2ob3o$74bo2bo$74bo8b2o$73bo6bo3bo$81bo$
75b2o6$67b3o$78b2o$78b2o3$84bo$83bobo$83bobo$84bo2$62b2o$62b2o7$86b2o$
86b2o3$79bo$79bo$79bo11bo$90bobo$91bo8$75b2o$67bo6bo2bo$66bobo5b3o$66b
obo5b3o$67bo7bo$73bo$52b2o22b2o$52b2o17b2o5bo$51bo2bo16b2o3b2o$51b2obo
2bo11b2ob2o$55bo2bo12b2o4bo$55bobo10b2o6b2o20bobo$68bobo5bo2bo17bo$68b
2o7b3o16bo3bo$69bo9bo$98bo2$95b3o2$84bo$83bobo$83bobo$84bo10$86b2o$86b
2o3$79bo$79bo$79bo11bo$90bobo$91bo8$46b2o$46b2o2$73b2o$54b2o17b2o$54b
2o3$74b3o$35b2o56b2o$35bobo54bo2bo$36b2o38bo16bobo$75bobo16bo$75bobo
11b3o$76bo$97b2o$97b2o$93b2o$93b2o$84bo$83bobo$83bobo$84bo10$86b2o$86b
2o$79bo$78bobo$78bo2bo$79b2o$91bo$90bobo$91bo8$46b2o$46b2o2$73b2o$54b
2o17b2o$54b2o3$74b3o$35b2o56b2o$35bobo54bo2bo$36b2o38bo16bobo$75bobo
16bo$75bobo11b3o$76bo$97b2o$97b2o$93b2o$93b2o$84bo$83bobo$83bobo$84bo
10$86b2o$86b2o$79bo$78bobo$78bo2bo$79b2o$91bo$90bobo$91bo8$46b2o$46b2o
2$73b2o$54b2o17b2o$54b2o3$74b3o$35b2o56b2o$35bobo54bo2bo$36b2o38bo16bo
bo$75bobo16bo$75bobo11b3o$76bo$97b2o$97b2o$93b2o$93b2o$84bo$83bobo$83b
obo$84bo10$86b2o$86b2o$79bo$78bobo$78bo2bo$79b2o$91bo$90bobo$91bo8$46b
2o$46b2o2$73b2o$54b2o17b2o$54b2o3$74b3o$35b2o56b2o$35bobo54bo2bo$36b2o
38bo16bobo$75bobo16bo$75bobo11b3o$76bo$97b2o$97b2o$93b2o$93b2o$84bo$
83bobo$83bobo$84bo10$86b2o$86b2o$79bo$78bobo$78bo2bo$79b2o$91bo$90bobo
$91bo8$46b2o$46b2o2$73b2o$54b2o17b2o$54b2o3$74b3o$35b2o56b2o$35bobo54b
o2bo$36b2o38bo16bobo$75bobo16bo$75bobo11b3o$76bo$97b2o$97b2o$93b2o$93b
2o$84bo$83bobo$83bobo$84bo10$86b2o$86b2o$79bo$78bobo$78bo2bo$79b2o$91b
o$90bobo$91bo!
User avatar
codeholic
Moderator
Posts: 1174
Joined: September 13th, 2011, 8:23 am
Location: Hamburg, Germany

Re: Fuse finder results

Post by codeholic »

At the first glance it is not listed in Nickolay's "monograph" (that is perhaps the most comprehensive work on Pi crawlers). So it may be new.
Ivan Fomichev
HartmutHolzwart
Posts: 942
Joined: June 27th, 2009, 10:58 am
Location: Germany

Re: Fuse finder results

Post by HartmutHolzwart »

here is another dirty herschel block fuse (28c/83?:

Code: Select all

x = 20, y = 519, rule = B3/S23
3$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b
2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$
7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o
6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b
2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$
7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o
6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b
2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$
7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o
6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b
2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$
7b2o6$7b2o$7b2o6$7b2o$7b2o6$7b2o$7b2o$16b3o$17bo$15b3o3$7b2o$7b2o!
HartmutHolzwart
Posts: 942
Joined: June 27th, 2009, 10:58 am
Location: Germany

Re: Fuse finder results

Post by HartmutHolzwart »

and this 10c/24 pi blinker fuse must be old:

Code: Select all

x = 531, y = 850, rule = B3/S23
61$263b3o10$263b3o10$263b3o10$263b3o10$263b3o10$263b3o10$263b3o10$263b
3o10$263b3o10$263b3o10$263b3o10$263b3o10$263b3o10$263b3o10$263b3o10$
263b3o10$263b3o10$263b3o10$263b3o10$263b3o10$263b3o10$263b3o10$263b3o
10$263b3o10$263b3o10$263b3o10$263b3o10$263b3o10$263b3o10$263b3o10$263b
3o10$263b3o10$263b3o10$263b3o10$263b3o10$263b3o10$263b3o10$263b3o10$
263b3o10$263b3o10$263b3o10$263b3o10$263b3o10$263b3o10$263b3o10$263b3o
10$263b3o10$263b3o10$263b3o10$263b3o10$263b3o10$263b3o10$263b3o10$263b
3o10$263b3o10$263b3o10$263b3o10$263b3o10$263b3o9$264bo$263b3o$262b2ob
2o4$261bo5bo$259b3o5b3o$255b3o6bo6b3o$255bo7b3o7bo$255b3o2bob2ob2obo2b
3o$260b4ob4o$258b2ob2o3b2ob2o2$259b2o7b2o$260b2o5b2o$261bo5bo2$257bo
13bo$256bobo11bobo$256bobo11bobo$257bo13bo6$256bo15bo$255bobo13bobo$
255bobo13bobo$256bo15bo10$262b2ob2o$262b2ob2o19$232bo19bo23bo19bo$231b
2o20b2o19b2o20b2o$231bobo19b2o19b2o19bobo$254b2o17b2o$254b2o17b2o$253b
o21bo2$246b2ob2o27b2ob2o$245b3o4b2o21b2o4b3o$245bo3b2o2b2o19b2o2b2o3bo
$246b3ob2o2bo19bo2b2ob3o$251bobo21bobo$251b3o21b3o2$248b3o27b3o3$255b
2o15b2o$245b2o8bobo13bobo8b2o$245b2o9bo15bo9b2o$202bo123bo$201b2o39b2o
2b2obo29bob2o2b2o39b2o$201bobo38bo6bo3b3o17b3o3bo6bo38bobo$242b2o11bo
17bo11b2o$251b2ob2o17b2ob2o$244b3o3bo27bo3b3o$249bo3bo21bo3bo2$249b3o
25b3o2$262b2ob2o$262b2ob2o9$172bo183bo$171b2o183b2o$171bobo181bobo10$
247bo33bo$246bobo31bobo$246bobo31bobo$247bo33bo2$245bo37bo$244bobo35bo
bo$244bobo35bobo$142bo102bo37bo102bo$141b2o243b2o$141bobo241bobo4$262b
2ob2o$262b2ob2o13$112bo149b2ob2o149bo$111b2o149b2ob2o149b2o$111bobo
301bobo18$82bo363bo$81b2o363b2o$81bobo163bo33bo163bobo$246bobo31bobo$
246bobo31bobo$247bo33bo2$245bo37bo$244bobo35bobo$5b2o237bobo35bobo$5bo
bo237bo37bo$5bo5$262b2ob2o$262b2ob2o3$52bo423bo$51b2o423b2o$51bobo421b
obo8$262b2ob2o$262b2ob2o3$506b2o$507b2o$506bo!
User avatar
biggiemac
Posts: 515
Joined: September 17th, 2014, 12:21 am
Location: California, USA

Re: Fuse finder results

Post by biggiemac »

Fun with the 28c/83 fuse and a loaf:

Code: Select all

x = 119, y = 619, rule = B3/S23
b2o$b2o2$9b2o$9b2o3$b2o$b2o22b2o$24bo2bo$9b2o14bobo$9b2o15bo3$b2o$b2o
2$9b2o$9b2o3$b2o$b2o2$9b2o$9b2o3$b2o$b2o2$9b2o$9b2o3$b2o$b2o22b2o$24bo
2bo$9b2o14bobo$9b2o15bo3$b2o$b2o2$9b2o$9b2o3$b2o$b2o2$9b2o$9b2o3$b2o$b
2o2$9b2o$9b2o3$b2o$b2o22b2o$24bo2bo$9b2o14bobo$9b2o15bo3$b2o$b2o2$9b2o
$9b2o3$b2o$b2o2$9b2o$9b2o3$b2o$b2o2$9b2o$9b2o3$b2o$b2o22b2o$24bo2bo$9b
2o14bobo$9b2o15bo3$b2o$b2o2$9b2o$9b2o3$b2o$b2o2$9b2o$9b2o3$b2o$b2o2$9b
2o$9b2o3$b2o$b2o22b2o$24bo2bo$9b2o14bobo$9b2o15bo3$b2o$b2o2$9b2o$9b2o
3$b2o$b2o2$9b2o$9b2o3$b2o$b2o2$9b2o$9b2o3$b2o$b2o22b2o$24bo2bo$9b2o14b
obo$9b2o15bo3$b2o$b2o2$9b2o$9b2o3$b2o$b2o2$9b2o$9b2o3$b2o$b2o2$9b2o$9b
2o3$b2o$b2o22b2o$24bo2bo$9b2o14bobo$9b2o15bo3$b2o$b2o2$9b2o$9b2o3$b2o$
b2o2$9b2o$9b2o3$b2o$b2o2$9b2o$9b2o3$b2o$b2o22b2o$24bo2bo$9b2o14bobo$9b
2o15bo3$b2o$b2o2$9b2o$9b2o3$b2o$b2o2$9b2o$9b2o3$b2o$b2o2$9b2o$9b2o3$b
2o$b2o22b2o$24bo2bo$9b2o14bobo$9b2o15bo3$b2o$b2o2$9b2o$9b2o3$b2o$b2o2$
9b2o$9b2o3$b2o$b2o2$9b2o$9b2o3$b2o$b2o22b2o$24bo2bo$9b2o14bobo$9b2o15b
o3$b2o$b2o2$9b2o$9b2o3$b2o$b2o2$9b2o$9b2o3$b2o$b2o2$9b2o$9b2o3$b2o$b2o
22b2o$24bo2bo$9b2o14bobo$9b2o15bo3$b2o$b2o2$9b2o$9b2o3$b2o$b2o2$9b2o$
9b2o3$b2o$b2o2$9b2o$9b2o3$b2o$b2o22b2o$24bo2bo$9b2o14bobo$9b2o15bo3$b
2o$b2o2$9b2o$9b2o3$b2o$b2o2$9b2o$9b2o3$b2o$b2o2$9b2o$9b2o3$b2o$b2o22b
2o$24bo2bo$9b2o14bobo$9b2o15bo3$b2o$b2o2$9b2o$9b2o3$b2o$b2o2$9b2o$9b2o
3$b2o$b2o2$9b2o$9b2o3$b2o$b2o22b2o$19bo4bo2bo$9b2o7b3o4bobo$9b2o6b4o5b
o3$b2o14b4o$b2o14b4o$18bo$9b2o$9b2o3$b2o$b2o2$9b2o8b2o$9b2o8b2o3$b2o
13b3o$b2o$14bo$14bo5bobo$14bo4bo$19bo2bo$16b3obobo$b2o$b2o6$b2o$b2o2$
9b2o$9b2o3$b2o$b2o5$20b2o$b2o16bo2bo$b2o17bobo12bo$21bo11bobo$34b2o4$b
2o$b2o6$b2o$b2o6$b2o$b2o14bo$15bobo$16b2o3$20b2o$b2o16bo2bo$b2o17bobo$
21bo5$b2o$b2o6$b2o$b2o6$b2o$b2o51bobo$55b2o$55bo2$17b2o$16bo2bo$b2o14b
obo$b2o15bo6$b2o$b2o6$b2o$b2o6$b2o$b2o4$17b2o$16bo2bo$b2o14bobo$b2o15b
o6$b2o$b2o6$b2o7b3o63bo$b2o7bo2bo63bo$8bo3b2o61b3o$8b3o$9bo2$7bo$6b6ob
o$5bo8bo$6bo6bo$6bo$7bobo$17b2o$16bo2bo$17bobo$18bo6$b2o$b2o3$17bobo$
18b2o$18bo3$2b3o$2b3o7b2o$4bo6bo2bo$12bobo$13bo8$8b2o$8b2o$b4o$b2o2bo$
o5bo$b2o2bo$b4o$96bo$97b2o$96b2o47$118bo$116bobo$117b2o!
The fuse nudges the loaf, emitting a glider and otherwise burning cleanly. The nudged loaf allows another fuse that wouldn't interfere with the first one to do the same.
Physics: sophistication from simplicity.
HartmutHolzwart
Posts: 942
Joined: June 27th, 2009, 10:58 am
Location: Germany

Re: Fuse finder results

Post by HartmutHolzwart »

Weird question:

What is the most efficient way to draw a line of blinkers in alternating phases?

Another weird question:

Instead of just starting with a random field, could we start with a random gen an pistion of say a pi or herschel / b-heptomino. These seem to be good candidates to create fuses!
User avatar
codeholic
Moderator
Posts: 1174
Joined: September 13th, 2011, 8:23 am
Location: Hamburg, Germany

Re: Fuse finder results

Post by codeholic »

HartmutHolzwart wrote:What is the most efficient way to draw a line of blinkers in alternating phases?
If you don't care about generation number, I would just add g.run(1) in the loop. Or you can do something like

Code: Select all

blinker = g.evolve(blinker, 1)
in the loop.
HartmutHolzwart wrote:Instead of just starting with a random field, could we start with a random gen an[d] p[osition] of say a pi or herschel / b-heptomino. These seem to be good candidates to create fuses!
Sure, just import randint from random and add another constant with the methuselah you like, e. g.

Code: Select all

from random import randint
PI = g.parse('3o$obo$obo!')
and then replace g.randfill(50) with

Code: Select all

g.putcells(g.transform(g.evolve(PI, rand(0, MAX_GEN)), rand(MIN_X, MAX_X), rand(MIN_Y, MAX_Y)))
where MIN_X, MIN_Y, MAX_X, MAX_Y are constants that determine range of possible positions for the crawler, and MAX_GEN determines the range of generations.
Ivan Fomichev
User avatar
Scorbie
Posts: 1728
Joined: December 7th, 2013, 1:05 am

Re: Fuse finder results

Post by Scorbie »

HartmutHolzwart wrote:Re the fuse finder script:

Code: Select all

# codeholic's FuseFinder script v1.02
#...
#(I noticed that Golly's Undo got very slow after running the old script) (?)
I noticed that you removed g.reset after extracting the pattern to be tested. This leads to saving the pattern after 4096 gens, instead of the original starting pattern...
Adding the reset line again solves the issue. I get two different fuses: The one is the known, the other is a HWSS, the trivial solution.
What is the best fix for that? I assume that the reset was somehow related to the slowing down of undo (and I suppose that my file issue was actually related to missing memory rather than file permission problems).
I think using g.new() instead of g.reset() in the main loop and using g.reset() here would be better.

Code: Select all

  if not patterns_identical(test, cells):
    g.reset()
    g.save(os.path.join(outpath, FUSENAME + str(count) + '.rle'), 'rle')
    g.show("Saved fuse to " + outpath + FUSENAME + str(count) + ".rle")
    found += 1
Also, a trivial thing, but i think displaying the soup&found count after this code is a little more accurate. (when the n*100th soup found a fuse)

Oh, by the way, I wonder why this script is slower than apgsearch. How could we make this faster?
HartmutHolzwart
Posts: 942
Joined: June 27th, 2009, 10:58 am
Location: Germany

Re: Fuse finder results

Post by HartmutHolzwart »

Thanks for the helpful hints!

A little bit more of thinking from my side would have helped :-(. I'm out of programming practice recently...

I want to search fuses for alternating lines of blinkers to see whether there might be surpises that hve been overlooked so far. Where I guess there is no other 17c/45 reaction. That would be overstretching luck.

Anyway: The searches already turned up some unexpected results (at least for me).
User avatar
codeholic
Moderator
Posts: 1174
Joined: September 13th, 2011, 8:23 am
Location: Hamburg, Germany

Re: Fuse finder results

Post by codeholic »

Scorbie wrote:Oh, by the way, I wonder why this script is slower than apgsearch. How could we make this faster?
I think the main reason is because apgsearch runs several soups in parallel, uses g.step() and stops as soon soups stabilise. Maybe there are also other important optimisations, that I missed.
Ivan Fomichev
HartmutHolzwart
Posts: 942
Joined: June 27th, 2009, 10:58 am
Location: Germany

Re: Fuse finder results

Post by HartmutHolzwart »

a 24c/41 tub fuse:

Code: Select all

x = 45, y = 285, rule = B3/S23
11$33bo$32bobo$33bo4$33bo$32bobo$33bo4$33bo$32bobo$33bo4$33bo$32bobo$
33bo4$33bo$32bobo$33bo4$33bo$32bobo$33bo4$33bo$32bobo$33bo4$33bo$32bob
o$33bo4$33bo$32bobo$33bo4$33bo$32bobo$33bo4$33bo$32bobo$33bo4$33bo$32b
obo$33bo4$33bo$32bobo$33bo4$33bo$32bobo$33bo4$33bo$32bobo$33bo4$33bo$
32bobo$33bo4$33bo$32bobo$33bo4$33bo$32bobo$33bo4$33bo$32bobo$33bo4$33b
o$32bobo$33bo4$33bo$32bobo$33bo4$33bo$32bobo$33bo4$33bo$32bobo$33bo4$
33bo$32bobo$33bo4$33bo$32bobo$33bo4$33bo$32bobo$33bo4$33bo$32bobo$33bo
4$33bo$32bobo$33bo4$33bo$32bobo$33bo4$33bo$32bobo$33bo4$33bo$32bobo$
33bo4$33bo$32bobo$33bo4$33bo$32bobo$33bo4$33bo$32bobo$33bo4$33bo$32bob
o$33bo4$33bo$32bobo$33bo4$33bo$32bobo$33bo4$33bo$32bobo$33bo4$33bo$32b
obo$33bo4$33bo$32bobo$33bo4$33bo$32bobo$33bo4$33bo$32bobo$32bobo$32bob
o2$31bo3bo$32b3o!
6c/10 pi fuse

Code: Select all

x = 66, y = 234, rule = B3/S23
6$24bo$23bobo$24bo4$24bo$23bobo$24bo4$24bo$23bobo$24bo4$24bo$23bobo$
24bo4$24bo$23bobo$24bo4$24bo$23bobo$24bo4$24bo$23bobo$24bo4$24bo$23bob
o$24bo4$24bo$23bobo$24bo4$24bo$23bobo$24bo4$24bo$23bobo$24bo4$24bo$23b
obo$24bo4$24bo$23bobo$24bo4$24bo$23bobo$24bo4$24bo$23bobo$24bo4$24bo$
23bobo$24bo4$24bo$23bobo$24bo4$24bo$23bobo$24bo4$24bo$23bobo$24bo4$24b
o$23bobo$24bo4$24bo$23bobo$24bo4$24bo$23bobo$24bo4$24bo$23bobo$24bo4$
24bo$23bobo$24bo4$24bo$23bobo$24bo4$24bo$23bobo$24bo4$24bo$23bobo$24bo
4$24bo$23bobo$24bo4$24bo$23bobo$24bo4$24bo$23bobo$24bo4$24bo$23bobo$
24bo4$24bo$23bobo$24bo4$24bo$23bobo$24bo4$24bo$23bobo$22b2ob2o4$20b2o
5b2o$19b2o7b2o$20bobo3bobo$22bo3bo$19bo9bo$19bo2bo3bo2bo$18bo3bo3bo3bo
$16b3o3b2ob2o3b3o$16b2o4bo3bo4b2o$16b2obo2b2ob2o2bob2o$18bo3b2ob2o3bo$
18bo11bo$19b3o5b3o!
15c/15 tub fuse

Code: Select all

x = 36, y = 451, rule = B3/S23
17$19bo$18bobo$19bo3$19bo$18bobo$19bo3$19bo$18bobo$19bo3$19bo$18bobo$
19bo3$19bo$18bobo$19bo3$19bo$18bobo$19bo3$19bo$18bobo$19bo3$19bo$18bob
o$19bo3$19bo$18bobo$19bo3$19bo$18bobo$19bo3$19bo$18bobo$19bo3$19bo$18b
obo$19bo3$19bo$18bobo$19bo3$19bo$18bobo$19bo3$19bo$18bobo$19bo3$19bo$
18bobo$19bo3$19bo$18bobo$19bo3$19bo$18bobo$19bo3$19bo$18bobo$19bo3$19b
o$18bobo$19bo3$19bo$18bobo$19bo3$19bo$18bobo$19bo3$19bo$18bobo$19bo3$
19bo$18bobo$19bo3$19bo$18bobo$19bo3$19bo$18bobo$19bo3$19bo$18bobo$19bo
3$19bo$18bobo$19bo3$19bo$18bobo$19bo3$19bo$18bobo$19bo3$19bo$18bobo$
19bo3$19bo$18bobo$19bo3$19bo$18bobo$19bo3$19bo$18bobo$19bo3$19bo$18bob
o$19bo3$19bo$18bobo$19bo3$19bo$18bobo$19bo3$19bo$18bobo$19bo3$19bo$18b
obo$19bo3$19bo$18bobo$19bo3$19bo$18bobo$19bo3$19bo$18bobo$19bo3$19bo$
18bobo$19bo3$19bo$18bobo$19bo3$19bo$18bobo$19bo3$19bo$18bobo$19bo3$19b
o$18bobo$19bo3$19bo$18bobo$19bo3$19bo$18bobo$19bo3$19bo$18bobo$19bo3$
19bo$18bobo$19bo3$19bo$18bobo$19bo3$19bo$18bobo$19bo3$19bo$18bobo$19bo
3$19bo$18bobo$19bo3$19bo$18bobo$19bo3$19bo$18bobo$19bo3$19bo$18bobo$
19bo3$19bo$18bobo$19bo3$19bo$18bobo$19bo3$19bo$18bobo$17b2ob2o$17b2ob
2o$17b2ob2o$18b3o$19bo6$16bo5bo$15bo3bo3bo$15bob5obo2$16b3ob3o$16b2obo
b2o$17bo3bo$17b5o$18b3o6$19bo$19bo$19bo9$18b3o9$19bo$19bo$19bo9$18b3o
9$19bo$19bo$19bo9$18b3o9$19bo$19bo$19bo9$18b3o9$19bo$19bo$19bo9$18b3o
9$19bo$19bo$19bo!
20c/20 tub fuse

Code: Select all

x = 30, y = 364, rule = B3/S23
17$17bo$16bobo$17bo2$17bo$16bobo$17bo2$17bo$16bobo$17bo2$17bo$16bobo$
17bo2$17bo$16bobo$17bo2$17bo$16bobo$17bo2$17bo$16bobo$17bo2$17bo$16bob
o$17bo2$17bo$16bobo$17bo2$17bo$16bobo$17bo2$17bo$16bobo$17bo2$17bo$16b
obo$17bo2$17bo$16bobo$17bo2$17bo$16bobo$17bo2$17bo$16bobo$17bo2$17bo$
16bobo$17bo2$17bo$16bobo$17bo2$17bo$16bobo$17bo2$17bo$16bobo$17bo2$17b
o$16bobo$17bo2$17bo$16bobo$17bo2$17bo$16bobo$17bo2$17bo$16bobo$17bo2$
17bo$16bobo$17bo2$17bo$16bobo$17bo2$17bo$16bobo$17bo2$17bo$16bobo$17bo
2$17bo$16bobo$17bo2$17bo$16bobo$17bo2$17bo$16bobo$17bo2$17bo$16bobo$
17bo2$17bo$16bobo$17bo2$17bo$16bobo$17bo2$17bo$16bobo$17bo2$17bo$16bob
o$17bo2$17bo$16bobo$17bo2$17bo$16bobo$17bo2$17bo$16bobo$17bo2$17bo$16b
obo$17bo2$17bo$16bobo$17bo2$17bo$16bobo$17bo2$17bo$16bobo$17bo2$17bo$
16bobo$17bo2$17bo$16bobo$17bo2$17bo$16bobo$17bo2$17bo$16bobo$17bo2$17b
o$16bobo$17bo2$17bo$16bobo$17bo2$17bo$16bobo$17bo2$17bo$16bobo$17bo2$
17bo$16bobo$17bo2$17bo$16bobo$17bo2$17bo$16bobo$17bo2$17bo$16bobo$17bo
2$17bo$16bobo$17bo2$17bo$16bobo$17bo2$17bo$16bobo$17bo2$17bo$16bobo$
17bo2$17bo$16bobo$17bo2$17bo$16bobo$17bo2$17bo$16bobo$17bo2$17bo$16bob
o$17bo2$17bo$16bobo$17bo2$17bo$16bobo$17bo2$17bo$16bobo$17bo2$17bo$16b
obo$17bo2$17bo$16bobo$17bo2$17bo$16bobo$17bo2$17bo$16bobo$17bo2$17bo$
16bobo$17bo2$17bo$16bobo$16bobo$16bobo$15b2ob2o$15bo3bo$15b2ob2o2$15b
2ob2o$14bobobobo2$13bo7bo$13bo2bobo2bo$16bobo$16bobo$14bobobobo$14b2o
3b2o13$15b2ob2o$16bobo$14bobobobo$14b2o3b2o13$15b2ob2o$16bobo$14bobobo
bo$14b2o3b2o13$15b2ob2o$16bobo$14bobobobo$14b2o3b2o!
assysmetric variant of the 6c/10 pi fuse:

Code: Select all

x = 50, y = 513, rule = B3/S23
7$27bo$26bobo$27bo4$27bo$26bobo$27bo4$27bo$26bobo$27bo4$27bo$26bobo$
27bo4$27bo$26bobo$27bo4$27bo$26bobo$27bo4$27bo$26bobo$27bo4$27bo$26bob
o$27bo4$27bo$26bobo$27bo4$27bo$26bobo$27bo4$27bo$26bobo$27bo4$27bo$26b
obo$27bo4$27bo$26bobo$27bo4$27bo$26bobo$27bo4$27bo$26bobo$27bo4$27bo$
26bobo$27bo4$27bo$26bobo$27bo4$27bo$26bobo$27bo4$27bo$26bobo$27bo4$27b
o$26bobo$27bo4$27bo$26bobo$27bo4$27bo$26bobo$27bo4$27bo$26bobo$27bo4$
27bo$26bobo$27bo4$27bo$26bobo$27bo4$27bo$26bobo$27bo4$27bo$26bobo$27bo
4$27bo$26bobo$27bo4$27bo$26bobo$27bo4$27bo$26bobo$27bo4$27bo$26bobo$
27bo4$27bo$26bobo$27bo4$27bo$26bobo$27bo4$27bo$26bobo$27bo4$27bo$26bob
o$27bo4$27bo$26bobo$27bo4$27bo$26bobo$27bo4$27bo$26bobo$27bo4$27bo$26b
obo$27bo4$27bo$26bobo$27bo4$27bo$26bobo$27bo4$27bo$26bobo$27bo4$27bo$
26bobo$27bo4$27bo$26bobo$27bo4$27bo$26bobo$27bo4$27bo$26bobo$27bo4$27b
o$26bobo$27bo4$27bo$26bobo$27bo4$27bo$26bobo$25b2ob2o4$23b2o5b2o$22b2o
7b2o$23bobo3bobo$24b2o3bo$32bo$29bo2bo$29bo3bo$28b2o3b3o$29bo4b2o$28b
2o2bob2o$28b2o3bo$20b2ob2o8bo$19b3ob2o5b3o$18b2o$17b3o6b2o$17b2o2bo$
18b2obo6bo$20b2o5bo$24b3o4$27bo$26bobo2$29b2o$26b2o3bo$25bobob2o$24b2o
2b3o$24b3o12$23b2o3bo$23b2o3bo$28bo10$23b2o3bo$23b2o3bo$28bo10$23b2o3b
o$23b2o3bo$28bo10$23b2o3bo$23b2o3bo$28bo10$23b2o3bo$23b2o3bo$28bo10$
23b2o3bo$23b2o3bo$28bo10$23b2o3bo$23b2o3bo$28bo10$23b2o3bo$23b2o3bo$
28bo10$23b2o3bo$23b2o3bo$28bo10$23b2o3bo$23b2o3bo$28bo10$23b2o3bo$23b
2o3bo$28bo10$23b2o3bo$23b2o3bo$28bo10$23b2o3bo$23b2o3bo$28bo10$23b2o3b
o$23b2o3bo$28bo10$23b2o3bo$23b2o3bo$28bo!
HartmutHolzwart
Posts: 942
Joined: June 27th, 2009, 10:58 am
Location: Germany

Re: Fuse finder results

Post by HartmutHolzwart »

Another 7c/14 tub fuse:

Code: Select all

x = 95, y = 623, rule = B3/S23
27$35bo$34bobo$35bo5$35bo$34bobo$35bo5$35bo$34bobo$35bo5$35bo$34bobo$
35bo5$35bo$34bobo$35bo5$35bo$34bobo$35bo5$35bo$34bobo$35bo5$35bo$34bob
o$35bo5$35bo$34bobo$35bo5$35bo$34bobo$35bo5$35bo$34bobo$35bo5$35bo$34b
obo$35bo5$35bo$34bobo$35bo5$35bo$34bobo$35bo5$35bo$34bobo$35bo5$35bo$
34bobo$35bo5$35bo$34bobo$35bo5$35bo$34bobo$35bo5$35bo$34bobo$35bo5$35b
o$34bobo$35bo5$35bo$34bobo$35bo5$35bo$34bobo$35bo5$35bo$34bobo$35bo5$
35bo$34bobo$35bo5$35bo$34bobo$35bo5$35bo$34bobo$35bo5$35bo$34bobo$35bo
5$35bo$34bobo$35bo5$35bo$34bobo$35bo5$35bo$34bobo$35bo5$35bo$34bobo$
35bo5$35bo$34bobo$35bo5$35bo$34bobo$35bo5$35bo$34bobo$35bo5$35bo$34bob
o$35bo5$35bo$34bobo$35bo5$35bo$34bobo$35bo5$35bo$34bobo$35bo5$35bo$34b
obo$35bo5$35bo$34bobo$35bo5$35bo$34bobo$35bo5$35bo$34bobo$35bo5$35bo$
34bobo$35bo5$35bo$34bobo$35bo5$35bo$34bobo$35bo5$35bo$34bobo$35bo5$35b
o$34bobo$35bo5$35bo$34bobo$35bo5$35bo$34bobo$35bo5$35bo$34bobo$35bo5$
35bo$34bobo$35bo5$35bo$34bobo$35bo5$35bo$34bobo$35bo5$35bo$34bobo$35bo
5$35bo$34bobo$35bo5$35bo$34bobo$35bo5$35bo$34bobo$35bo5$35bo$34bobo$
35bo5$35bo$34bobo$35bo5$35bo$34bobo$35bo5$35bo$34bobo$35bo5$35bo$34bob
o$35bo5$35bo$34bobo$35bo5$35bo$34bobo$35bo5$35bo$34bobo$35bo5$35bo$34b
obo$35bo5$35bo$34bobo$35bo2$35bo$34bobo$33b2ob2o3$31bo7bo$30bobo5bobo$
30bo2bo3bo2bo$31b2o5b2o4$31bo7bo$30bobo5bobo$30bo2bo3bo2bo$31b2o5b2o4$
31bo7bo$30bobo5bobo$30bo2bo3bo2bo$31b2o5b2o4$31bo7bo$30bobo5bobo$30bo
2bo3bo2bo$31b2o5b2o4$31bo7bo$30bobo5bobo$30bo2bo3bo2bo$31b2o5b2o4$31bo
7bo$30bobo5bobo$30bo2bo3bo2bo$31b2o5b2o4$31bo7bo$30bobo5bobo$30bo2bo3b
o2bo$31b2o5b2o4$31bo7bo$30bobo5bobo$30bo2bo3bo2bo$31b2o5b2o4$31bo7bo$
30bobo5bobo$30bo2bo3bo2bo$31b2o5b2o4$31bo7bo$30bobo5bobo$30bo2bo3bo2bo
$31b2o5b2o4$31bo7bo$30bobo5bobo$30bo2bo3bo2bo$31b2o5b2o4$31bo7bo$30bob
o5bobo$30bo2bo3bo2bo$31b2o5b2o4$31bo7bo$30bobo5bobo$30bo2bo3bo2bo$31b
2o5b2o4$31bo7bo$30bobo5bobo$30bo2bo3bo2bo$31b2o5b2o4$31bo7bo$30bobo5bo
bo$30bo2bo3bo2bo$31b2o5b2o4$31bo7bo$30bobo5bobo$30bo2bo3bo2bo$31b2o5b
2o4$31bo7bo$30bobo5bobo$30bo2bo3bo2bo$31b2o5b2o4$31bo7bo$30bobo5bobo$
30bo2bo3bo2bo$31b2o5b2o!
User avatar
simsim314
Posts: 1828
Joined: February 10th, 2014, 1:27 pm

Re: Fuse finder results

Post by simsim314 »

It's interesting to check if some of the fuses are reusable.
User avatar
simsim314
Posts: 1828
Joined: February 10th, 2014, 1:27 pm

Re: Fuse finder results

Post by simsim314 »

Scorbie wrote:Oh, by the way, I wonder why this script is slower than apgsearch. How could we make this faster?
As I mentioned already

g.run() is significantly slower than g.step(). Because the main time waster in this script is the iteration, you can make x2-x4 speedup just by using step instead of run.

reset() is also slower than new(). At least one should use new() from time to time. One reason is that golly continue to allocate memory inside same document. This causes two things: 1. memory leaks, and performance issue. 2. golly crushes after a while the script is running. Once you use new() at least once in a while this problem disappears.

I couldn't confirm whether combination of new() and reset() is faster than just always using new() (for my purposes the difference was neglectable). But I did confirmed that golly scripts are much more stable with new().
User avatar
Scorbie
Posts: 1728
Joined: December 7th, 2013, 1:05 am

Re: Fuse finder results

Post by Scorbie »

Thanks for your help and attention, guys! So the optimization comes from:
1) using g.step() instead of g.run()
2) multiple soups per page
3) using g.new() rather than g.reset() --- Pretty much implemented, I believe.

I briefly tested 1) g.step().
It does increase the speed, but sadly not that much. 70soups/s ->80soups/s

I think it is because you have to either:
(i) set a large step size, and golly would take some time caching the hashtiles, or
(ii) set a small step size, and call the g.step() multiple times, which is also time-consuming.

And then I briefly checked the time spent inside the infinite loop.
g.randfill() takes about half of the time.
generating the pattern takes about a quarter of the time.
Which means that there is a certain limit in optimizing the generating function.

EDIT: No, I was wrong. I think I made a mistake on the code or something... running 4096 gens takes almost all of the time. Sorry.

So, I guess we have to implement 2) then. I'll try that after a good night's sleep.

Here's my hacked(albeit imperfect) version of codeholic's code.
  • Moved the parameters to the top of the source code.(Hope that doesn't affect the speed)
    Can search for fuses with different slopes (trivial to implement)
    Reduced the number of copies so may have false positives (insurance: # of copies appearing in the result file)--I'm filtering these out manually. (there are more copies in the output file.)
    Implementing g.run()

Code: Select all

# codeholic's FuseFinder script v1.02
#   Creates a new layer called "FuseTestLayer"
#   Writes to a FuseFinder subfolder in Golly's data directory.
#   Updates screen every hundred trials (why not?)
#   Uses g.new() as per simsim314's suggestion
#      (I noticed that Golly's Undo got very slow after running the old script) (?)
import golly as g
import os
import time
import hashlib

outpath=os.path.join(g.getdir("data"),"FuseFinder")
if not os.path.isdir(outpath): os.mkdir(outpath)

SEED = "Anything you like"
FUSENAME = "Diagpuffer"
DEBRIS = g.parse('bo$obo$bo4$3bo$2bobo$2bobo$3bo!')
WIDTH = 5
HEIGHT = 10
DX, DY = (-7, -7) #For diagonal/oblique fuses
COPIES = 30
INSURANCE = 100
TESTRECT = [COPIES * DX, COPIES * DY, WIDTH, HEIGHT]
RNDSIZE = 15
RNDRECT = [0, 0, RNDSIZE, RNDSIZE]
SOUPSPERDISPLAY = 100

def hashsoup(instring):

    s = hashlib.sha256(instring).digest()

    thesoup = []

    for j in xrange(32):

        t = ord(s[j])

        for k in xrange(8):

            if (t & (1 << (7 - k))):

                thesoup.append(k + 8*(j % 2))
                thesoup.append(int(j / 2))

    return thesoup

def patterns_identical(cells1, cells2):
  if len(cells1) != len(cells2):
    return False
  return set(zip(cells1[::2], cells1[1::2])) == set(zip(cells2[::2], cells2[1::2]))

for i in range(g.numlayers()):
  if g.getname(i)=="FuseTestLayer":
    g.select(g.getrect())
    g.clear(0)
    break
if not g.getname(i)=="FuseTestLayer":  g.addlayer()
g.setalgo('HashLife')
for i in xrange(1, COPIES+1):
  g.putcells(DEBRIS, i * DX, i * DY)
allcells=g.getcells(g.getrect())
cells = g.getcells(TESTRECT)
g.new("insurance")
for i in xrange(COPIES+1, INSURANCE):
  g.putcells(DEBRIS, i * DX, i * DY)
insurancells = g.getcells(g.getrect())

count, found = 0, 0

start_time = time.clock()

while True:
  g.new("FuseTestLayer")
  g.putcells(allcells + hashsoup(SEED+str(count)))
  g.setbase(4)
  g.setstep(6)
  g.step()
  test = g.getcells(TESTRECT)
  count += 1

  if not patterns_identical(test, cells):
    g.reset()
    g.putcells(insurancells)
    g.save(os.path.join(outpath, FUSENAME + str(count) + '.rle'), 'rle')
    g.show("Saved fuse to " + outpath + FUSENAME + str(count) + ".rle")
    found += 1
  
  if count % SOUPSPERDISPLAY == 0:
    end_time =time.clock()
    g.show('Count:' + str(count) + ' Found:' + str(found) + ' (' +\
        str(round(SOUPSPERDISPLAY/(end_time - start_time), 2)) + " soups per second)")
    start_time = end_time
    g.setmag(2)
    g.update()
(Maybe I know sth wrong, especially about the hashlife algo. Please reply if something's wrong.)
Last edited by Scorbie on January 3rd, 2015, 9:49 am, edited 5 times in total.
User avatar
simsim314
Posts: 1828
Joined: February 10th, 2014, 1:27 pm

Re: Fuse finder results

Post by simsim314 »

The apg uses some Hash256 algorithm function instead of randfill - and I guess it's faster. It's also creates python list of random data and only in the end uses putcells to place the data into golly (although I'm not sure this is real improvement).

multiple soups per page - my tests showed it's useless in current context (running golly with 2N cells pattern, is the same as running golly twice with N cells patterns - but you welcome to verify/disprove this claim). apg might gain performance by combining the results from multiple searches and doing some other stuff with them.

---

I can't find g.step() in your script, only g.setstep(). And as dvgrn says, if you use setstep always add setbase, as he defined his base to be 2, and all scripts that define step without base don't work at his configuration (your script will run 4 generation for example). So it's best practice to add setbase(8).

I also didn't verified whether 64 steps of 64 is the same as one step of 4096, but my guess is that setbase(4) and single step, will work much faster (and HashLife knows how not to iterate empty SLs).
User avatar
Scorbie
Posts: 1728
Joined: December 7th, 2013, 1:05 am

Re: Fuse finder results

Post by Scorbie »

simsim314 wrote:I can't find g.step() in your script, only g.setstep(). And as dvgrn says, if you use setstep always add setbase, as he defined his base to be 2, and all scripts that define step without base don't work at his configuration (your script will run 4 generation for example). So it's best practice to add setbase(8).
Oh, No! I must have copied and pasted wrong somewhere. Really sorry about that... Fixed the code, but let me check if something's wrong.
HartmutHolzwart
Posts: 942
Joined: June 27th, 2009, 10:58 am
Location: Germany

Re: Fuse finder results

Post by HartmutHolzwart »

does yor demo setup find any fuses?
User avatar
Scorbie
Posts: 1728
Joined: December 7th, 2013, 1:05 am

Re: Fuse finder results

Post by Scorbie »

Oh it failed to find any, and I don't think it will.
User avatar
Scorbie
Posts: 1728
Joined: December 7th, 2013, 1:05 am

Re: Fuse finder results

Post by Scorbie »

I just tried that pattern to check if other slopes are working well.

Edit: Fixed a bug-- the pattern overwrites what's in the "TestFuseLayer" if it's not empty.
HartmutHolzwart
Posts: 942
Joined: June 27th, 2009, 10:58 am
Location: Germany

Re: Fuse finder results

Post by HartmutHolzwart »

your script gives some false positives for the demo fuse!

Mostly gliders, but also a glider laying switch engine turned up!
HartmutHolzwart
Posts: 942
Joined: June 27th, 2009, 10:58 am
Location: Germany

Re: Fuse finder results

Post by HartmutHolzwart »

Another 23c/74 pi fuse!

Maybe the reaction has some potential as it only needs support from one side!
HartmutHolzwart
Posts: 942
Joined: June 27th, 2009, 10:58 am
Location: Germany

Re: Fuse finder results

Post by HartmutHolzwart »

here is another 18c/58 blinker fuse:

Code: Select all

x = 331, y = 985, rule = B3/S23
61$229b3o8$230bo$230bo$230bo8$229b3o8$230bo$230bo$230bo8$229b3o8$230bo
$230bo$230bo8$229b3o8$230bo$230bo$230bo8$229b3o8$230bo$230bo$230bo8$
229b3o8$230bo$230bo$230bo8$229b3o8$230bo$230bo$230bo8$229b3o8$230bo$
230bo$230bo8$229b3o8$230bo$230bo$230bo8$229b3o8$230bo$230bo$230bo8$
229b3o8$230bo$230bo$230bo8$229b3o8$230bo$230bo$230bo8$229b3o8$230bo$
230bo$230bo8$229b3o8$230bo$230bo$230bo8$229b3o8$230bo$230bo$230bo8$
229b3o8$230bo$230bo$230bo8$229b3o8$230bo$230bo$230bo8$229b3o8$230bo$
230bo$230bo8$229b3o8$230bo$230bo$230bo8$229b3o8$230bo$230bo$230bo8$
229b3o8$230bo$230bo$230bo8$229b3o8$230bo$230bo$230bo8$229b3o8$230bo$
230bo$230bo8$229b3o8$230bo$230bo$230bo8$229b3o8$230bo$230bo$230bo8$
229b3o8$230bo$230bo$230bo8$229b3o8$230bo$230bo$230bo8$229b3o8$230bo$
230bo$230bo8$229b3o8$230bo$230bo$230bo8$229b3o8$230bo$230bo$230bo8$
229b3o8$230bo$230bo$230bo8$229b3o8$230bo$230bo$230bo8$229b3o8$230bo$
230bo$230bo8$229b3o8$230bo$230bo$230bo8$229b3o8$230bo$230bo$230bo8$
229b3o2$225b3o$224bo2bo$224bo2bo$224bo2bo$225b2o$229bo$228bobo$228bobo
3$222bobo$222b2o$223bo14$215bo$215bobo$215b2o14$209bo$207b2o$208b2o14$
201bo$200bo$200b3o15$193bobo$193b2o$194bo14$186bo$186bobo$186b2o14$
180bo$178b2o$179b2o14$172bo$171bo$171b3o15$164bobo$164b2o$165bo14$157b
o$157bobo$157b2o14$151bo$149b2o$150b2o14$143bo$142bo$142b3o15$135bobo$
135b2o$136bo!
User avatar
codeholic
Moderator
Posts: 1174
Joined: September 13th, 2011, 8:23 am
Location: Hamburg, Germany

Re: Fuse finder results

Post by codeholic »

Nice one. But it's not 18c/58, but 9c/29. It looks like a B-heptomino, but not quite. Did it evolve from a soup? It's a pity, that it can be supported only by blinkers.
Ivan Fomichev
HartmutHolzwart
Posts: 942
Joined: June 27th, 2009, 10:58 am
Location: Germany

Re: Fuse finder results

Post by HartmutHolzwart »

this is the soup it came from:

Code: Select all

x = 111, y = 199, rule = B3/S23
36bo$36bo8$35b3o8$36bo$36bo$36bo8$35b3o8$36bo$36bo$36bo8$35b3o8$36bo$
36bo$36bo8$35b3o8$36bo$36bo$36bo8$35b3o8$36bo$36bo$36bo8$35b3o8$36bo$
36bo$36bo8$35b3o8$36bo$36bo$36bo8$35b3o8$36bo$36bo$36bo8$35b3o8$36bo$
36bo$36bo8$31b4obo2bobo2b2o$32b2o3b2o2bo2b2o$31bo8bo2bobo$31bobobo4bo
3b2o$31b3o2b3o4b2o$31b2o3bobo3bo2bo$31b4obo2bo$32b2o2b4o$32b5obobo2bob
o$32b2obob2obo4bo$31bo5b2o2bo2b2o$33bobo5b2o2bo$31b2ob2o5b2o2bo$33b2ob
obob3o2bo$37bobo4b2o!
here is the start:

Code: Select all

x = 25, y = 150, rule = B3/S23
6$15b3o8$16bo$16bo$16bo8$15b3o8$16bo$16bo$16bo8$15b3o8$16bo$16bo$16bo
8$15b3o8$16bo$16bo$16bo8$15b3o8$16bo$16bo$16bo8$15b3o8$16bo$16bo$16bo
8$15b3o8$16bo$16bo$16bo8$15b3o$11b3o$11bo2bo$9bo$9bo5bo$9bo4bo$11b2o!
Post Reply