LifeViewer erroneously killing gliders

Has something gone haywire? Let us know about it!
Post Reply
MathAndCode
Posts: 5141
Joined: August 31st, 2020, 5:58 pm

LifeViewer erroneously killing gliders

Post by MathAndCode » December 16th, 2020, 11:28 pm

The kill gliders function on LifeViewer apparently kills internal gliders even though it shouldn't.
MathAndCode wrote:
December 16th, 2020, 11:25 pm
The methuselah doesn't work with kill gliders enabled.
Another example is the puffer here.
I am tentatively considering myself back.

User avatar
rowett
Moderator
Posts: 3776
Joined: January 31st, 2013, 2:34 am
Location: UK
Contact:

Re: LifeViewer erroneously killing gliders

Post by rowett » December 17th, 2020, 1:17 am

MathAndCode wrote:
December 16th, 2020, 11:28 pm
The kill gliders function on LifeViewer apparently kills internal gliders even though it shouldn't.
The glider formed at T=94 gets killed correctly because it is alone on the edge of the bounding box (in this case the left edge).

If you step the pattern below one generation to T=94 you'll see a glider form on the left edge.
If you then step back, enable Settings->Playback->Kill Gliders, and then step to T=94 again you'll see it gets deleted. This is expected.

Code: Select all

#CXRLE Gen=93
x = 31, y = 14, rule = B3/S23
28b2o$19bo7bo2bo$15b2o3b2o6b2o$14b2o4b2o$7b2o6b3o3b2o$4bo3bo7b2o2b2o$
2b2o5b2o$2b2obo2b2o3$19bo3$2o!

MathAndCode
Posts: 5141
Joined: August 31st, 2020, 5:58 pm

Re: LifeViewer erroneously killing gliders

Post by MathAndCode » December 17th, 2020, 1:28 am

rowett wrote:
December 17th, 2020, 1:17 am
If you step the pattern below one generation to T=94 you'll see a glider form on the left edge.
If you then step back, enable Settings->Playback->Kill Gliders, and then step to T=94 again you'll see it gets deleted. This is expected.

Code: Select all

#CXRLE Gen=93
x = 31, y = 14, rule = B3/S23
28b2o$19bo7bo2bo$15b2o3b2o6b2o$14b2o4b2o$7b2o6b3o3b2o$4bo3bo7b2o2b2o$
2b2o5b2o$2b2obo2b2o3$19bo3$2o!
I mean internal gliders. The relevant glider seems to be deleted at generation 1,528, four generations before it would have interacted with a blinker.
I am tentatively considering myself back.

User avatar
rowett
Moderator
Posts: 3776
Joined: January 31st, 2013, 2:34 am
Location: UK
Contact:

Re: LifeViewer erroneously killing gliders

Post by rowett » December 17th, 2020, 1:45 am

MathAndCode wrote:
December 17th, 2020, 1:28 am
I mean internal gliders. The relevant glider seems to be deleted at generation 1,528, four generations before it would have interacted with a blinker.
Please post the pattern here you are referring to.

MathAndCode
Posts: 5141
Joined: August 31st, 2020, 5:58 pm

Re: LifeViewer erroneously killing gliders

Post by MathAndCode » December 17th, 2020, 12:06 pm

rowett wrote:
December 17th, 2020, 1:45 am
Please post the pattern here you are referring to.

Code: Select all

x = 16, y = 16, rule = B3/S23
oboobbooooobbbob$
bobbbbooboooobbb$
bobbobbbbobboobo$
oboboobbbbboobbb$
obbbboobbooboobo$
ooobobbbooooobbo$
obbbooobbobboobb$
bbbooboobobobbbb$
bobboboboboooooo$
bbbobbbbooobbobb$
bbobbbbbobbooboo$
bbbbobooobbbboob$
bbbooboooboobooo$
obbooboboobooooo$
boboboboobbobbbb$
oboobobboooooobb!
I am tentatively considering myself back.

User avatar
rowett
Moderator
Posts: 3776
Joined: January 31st, 2013, 2:34 am
Location: UK
Contact:

Re: LifeViewer erroneously killing gliders

Post by rowett » December 17th, 2020, 4:39 pm

This should be fixed. Thanks for reporting!

MathAndCode
Posts: 5141
Joined: August 31st, 2020, 5:58 pm

Re: LifeViewer erroneously killing gliders

Post by MathAndCode » December 18th, 2020, 5:22 pm

rowett wrote:
December 17th, 2020, 4:39 pm
This should be fixed. Thanks for reporting!
The patterns that I mentioned in my first post work (Thank you for that, by the way.), but I just found an example that doesn't here.

Code: Select all

#C nikk-nikkm1r90-w4s906
#C http://nickgotts-nikk-nikkm1r90-w4s906.blogspot.com/
#C pattern given at http://nickgotts-eventful.blogspot.com/
x = 38, y = 940, rule = S23/B3
6bo$5bobo$$4bobbo$4boo$4bo25$34bobo$37bo$33bobbo$32b3o873$28bo3bo$29bo
bo$30bobbo$33bo$33bo24$o$bo$bbo$bo$o$bb3o!
I am tentatively considering myself back.

User avatar
rowett
Moderator
Posts: 3776
Joined: January 31st, 2013, 2:34 am
Location: UK
Contact:

Re: LifeViewer erroneously killing gliders

Post by rowett » December 19th, 2020, 4:24 am

MathAndCode wrote:
December 18th, 2020, 5:22 pm
I just found an example that doesn't
As escaping glider is one that is found on the edge of the pattern bounding box ahead of any other cells in the pattern. This is true for that example - when the gliders are killed they are on the right edge of the pattern bounding box and one or two cells further right than any other cell.

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

Re: LifeViewer erroneously killing gliders

Post by dvgrn » December 19th, 2020, 8:00 am

rowett wrote:
December 19th, 2020, 4:24 am
As escaping glider is one that is found on the edge of the pattern bounding box ahead of any other cells in the pattern.
Is that a deliberate rough approximation for efficiency reasons? To be sure to preserve the evolutionary sequence of a pattern, you'd have to be an awful lot more conservative than that.

The test pattern that calcyman mentioned recently is another example -- the glider on the right at T = 560 looks like an escapee, but it isn't, and if it's deleted it alters the pattern's final outcome:

Code: Select all

x = 16, y = 16, rule = LifeHistory
A.A.A2.2A.A4.A$2A3.A.7A$A.A2.A.A.3A2.2A$A4.A.A.2A2.A$.A3.2A5.2A$2.3A.
A3.4A$.3A4.3A2.3A$A11.2A$2A.A3.7A$A5.A2.A.A2.A$A.A3.2A.2A.A$A.2A2.A2.
2A$A2.2A.2A4.2A.A$A.2A.A2.A.A4.A$A2.2A2.A.A3.A.A$2A5.2A.4A!
#C [[ STEP 5 ZOOM 5 X 40 Y -20 STOP 560 ]]

User avatar
rowett
Moderator
Posts: 3776
Joined: January 31st, 2013, 2:34 am
Location: UK
Contact:

Re: LifeViewer erroneously killing gliders

Post by rowett » December 19th, 2020, 9:06 am

dvgrn wrote:
December 19th, 2020, 8:00 am
Is that a deliberate rough approximation for efficiency reasons?
To some extent yes. But the actual question is how do I know when it's safe to delete a glider?

I can imagine a pattern where it's an arbitrary number of generations until an "escaped" glider is caught by a faster moving spaceship.

User avatar
calcyman
Moderator
Posts: 2932
Joined: June 1st, 2009, 4:32 pm

Re: LifeViewer erroneously killing gliders

Post by calcyman » December 19th, 2020, 11:28 am

rowett wrote:
December 19th, 2020, 9:06 am
dvgrn wrote:
December 19th, 2020, 8:00 am
Is that a deliberate rough approximation for efficiency reasons?
To some extent yes. But the actual question is how do I know when it's safe to delete a glider?
If there's a sufficiently wide (6 hd is definitely sufficient) diagonal strip* between the glider and the rest of the pattern, we can remove it. This follows from the proof of the c/4 diagonal speed limit.

*oriented such that the glider is travelling perpendicularly away from that strip
What do you do with ill crystallographers? Take them to the mono-clinic!

MathAndCode
Posts: 5141
Joined: August 31st, 2020, 5:58 pm

Re: LifeViewer erroneously killing gliders

Post by MathAndCode » December 19th, 2020, 12:10 pm

calcyman wrote:
December 19th, 2020, 11:28 am
If there's a sufficiently wide (6 hd is definitely sufficient) diagonal strip* between the glider and the rest of the pattern, we can remove it. This follows from the proof of the c/4 diagonal speed limit.
That will get rid of most of the gliders, but there will be occasions where two parallel gliders are emitted side by side, separated by each other for some distance, and neither can be removed until the other has been removed. These two gliders won't slow down the speed by very much themselves, but they will also prevent any gliders behind them traveling in the same direction from being deleted, causing a bigger slowdown. Therefore, there will have to be some code to detect when a group of gliders has at least six clear half-diagonals behind it (although it won't need to be run as often). Also, an emitted XWSS will prevent any gliders emitted after it in two gliders from being deleted,but XWSS removal will be easier because one won't have to worry about tandem XWSSes (unless they're very close together).
I am tentatively considering myself back.

User avatar
calcyman
Moderator
Posts: 2932
Joined: June 1st, 2009, 4:32 pm

Re: LifeViewer erroneously killing gliders

Post by calcyman » December 19th, 2020, 12:38 pm

dvgrn wrote: Another minor question: does KILLGLIDERS work on other rules where gliders exist, but where the diagonal speed limit is greater than c/4 and/or the orthogonal speed limit is greater than c/2? Are there any such rules?
According to Catagolue, the maxrule for the glider is B2ikn34-r5-n678/S0234-k5678. Quick experimentation shows that a Greek cross will expand at c/3 diagonally, eventually engulfing the retreating glider:

Code: Select all

x = 25, y = 25, rule = B2ikn34-r5-n678/S0234-k5678
22b3o$24bo$23bo20$bo$3o$bo!
What do you do with ill crystallographers? Take them to the mono-clinic!

User avatar
rowett
Moderator
Posts: 3776
Joined: January 31st, 2013, 2:34 am
Location: UK
Contact:

Re: LifeViewer erroneously killing gliders

Post by rowett » December 19th, 2020, 12:39 pm

dvgrn wrote:
December 19th, 2020, 12:17 pm
does KILLGLIDERS work on other rules where gliders exist
KILLGLIDERS is only processed for range 1 [R]Standard and [R]History rules.

User avatar
rowett
Moderator
Posts: 3776
Joined: January 31st, 2013, 2:34 am
Location: UK
Contact:

Re: LifeViewer erroneously killing gliders

Post by rowett » December 27th, 2020, 5:56 am

MathAndCode wrote:
December 19th, 2020, 12:10 pm
calcyman wrote:
December 19th, 2020, 11:28 am
If there's a sufficiently wide (6 hd is definitely sufficient) diagonal strip* between the glider and the rest of the pattern, we can remove it. This follows from the proof of the c/4 diagonal speed limit.
That will get rid of most of the gliders, but there will be occasions where two parallel gliders are emitted side by side, separated by each other for some distance, and neither can be removed until the other has been removed.
I've added support for this, but only in the case where the two parallel gliders are both on the edge of the pattern bounding box. This means, for example, that the classic breeders pattern will not have gliders killed - which is intended.

BTS-fan
Posts: 157
Joined: December 22nd, 2021, 6:57 pm
Location: わかりません

Re: LifeViewer erroneously killing gliders

Post by BTS-fan » November 3rd, 2022, 10:23 pm

calcyman wrote:
December 19th, 2020, 12:38 pm
dvgrn wrote: Another minor question: does KILLGLIDERS work on other rules where gliders exist, but where the diagonal speed limit is greater than c/4 and/or the orthogonal speed limit is greater than c/2? Are there any such rules?
According to Catagolue, the maxrule for the glider is B2ikn34-r5-n678/S0234-k5678. Quick experimentation shows that a Greek cross will expand at c/3 diagonally, eventually engulfing the retreating glider:

Code: Select all

x = 25, y = 25, rule = B2ikn34-r5-n678/S0234-k5678
22b3o$24bo$23bo20$bo$3o$bo!
It is still killing erroneously gliders.
Fan of BTS (qkdxksthsuseks)
Currently inactive.

User avatar
rowett
Moderator
Posts: 3776
Joined: January 31st, 2013, 2:34 am
Location: UK
Contact:

Re: LifeViewer erroneously killing gliders

Post by rowett » November 4th, 2022, 12:28 am

BTS-fan wrote:
November 3rd, 2022, 10:23 pm
calcyman wrote:
December 19th, 2020, 12:38 pm
dvgrn wrote: Another minor question: does KILLGLIDERS work on other rules where gliders exist, but where the diagonal speed limit is greater than c/4 and/or the orthogonal speed limit is greater than c/2? Are there any such rules?
According to Catagolue, the maxrule for the glider is B2ikn34-r5-n678/S0234-k5678. Quick experimentation shows that a Greek cross will expand at c/3 diagonally, eventually engulfing the retreating glider:

Code: Select all

x = 25, y = 25, rule = B2ikn34-r5-n678/S0234-k5678
22b3o$24bo$23bo20$bo$3o$bo!
It is still killing erroneously gliders.
Yes it will do for rules that expand diagonally faster than c/4.

User avatar
muzik
Posts: 5612
Joined: January 28th, 2016, 2:47 pm
Location: Scotland

Re: LifeViewer erroneously killing gliders

Post by muzik » March 13th, 2023, 5:51 am

State 6 should probably be counted as part of the bounding box/diamond for KILLGLIDERS, since in many rules it causes nontrivial reactions that aren't just the rapid killing of the glider:

Code: Select all

x = 20, y = 18, rule = B3/S023History
7.A$7.A.A$7.2A3$F17.2A$F17.2A$F$F9$9.4F!

Code: Select all

x = 20, y = 18, rule = B3/S023History
7.A$7.A.A$7.2A3$F17.2A$F17.2A$F$F9$9.4F!
[[ KILLGLIDERS ]]

Post Reply