Page 1 of 1
LifeViewer erroneously killing gliders
Posted: December 16th, 2020, 11:28 pm
by MathAndCode
The kill gliders function on LifeViewer apparently kills internal gliders even though it shouldn't.
MathAndCode wrote: December 16th, 2020, 11:25 pmThe methuselah doesn't work with kill gliders enabled.
Another example is the puffer
here.
Re: LifeViewer erroneously killing gliders
Posted: December 17th, 2020, 1:17 am
by rowett
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!
Re: LifeViewer erroneously killing gliders
Posted: December 17th, 2020, 1:28 am
by MathAndCode
rowett wrote: December 17th, 2020, 1:17 amIf 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.
Re: LifeViewer erroneously killing gliders
Posted: December 17th, 2020, 1:45 am
by rowett
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.
Re: LifeViewer erroneously killing gliders
Posted: December 17th, 2020, 12:06 pm
by MathAndCode
rowett wrote: December 17th, 2020, 1:45 amPlease 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!
Re: LifeViewer erroneously killing gliders
Posted: December 17th, 2020, 4:39 pm
by rowett
This should be fixed. Thanks for reporting!
Re: LifeViewer erroneously killing gliders
Posted: December 18th, 2020, 5:22 pm
by MathAndCode
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!
Re: LifeViewer erroneously killing gliders
Posted: December 19th, 2020, 4:24 am
by rowett
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.
Re: LifeViewer erroneously killing gliders
Posted: December 19th, 2020, 8:00 am
by dvgrn
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 ]]
Re: LifeViewer erroneously killing gliders
Posted: December 19th, 2020, 9:06 am
by rowett
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.
Re: LifeViewer erroneously killing gliders
Posted: December 19th, 2020, 11:28 am
by apg
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
Re: LifeViewer erroneously killing gliders
Posted: December 19th, 2020, 12:10 pm
by MathAndCode
calcyman wrote: December 19th, 2020, 11:28 amIf 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).
Re: LifeViewer erroneously killing gliders
Posted: December 19th, 2020, 12:38 pm
by apg
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!
Re: LifeViewer erroneously killing gliders
Posted: December 19th, 2020, 12:39 pm
by rowett
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.
Re: LifeViewer erroneously killing gliders
Posted: December 27th, 2020, 5:56 am
by rowett
MathAndCode wrote: December 19th, 2020, 12:10 pm
calcyman wrote: December 19th, 2020, 11:28 amIf 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.
Re: LifeViewer erroneously killing gliders
Posted: November 3rd, 2022, 10:23 pm
by BTS-fan
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.
Re: LifeViewer erroneously killing gliders
Posted: November 4th, 2022, 12:28 am
by rowett
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.
Re: LifeViewer erroneously killing gliders
Posted: March 13th, 2023, 5:51 am
by muzik
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 ]]
Re: LifeViewer erroneously killing gliders
Posted: August 1st, 2024, 5:55 am
by Citation needed
Another problem is that it can kill
only gliders.
Code: Select all
x = 20, y = 20, rule = B3/S2-i34q
b3o$b3o$o$bo3$6b3o$6bo$7bo3$13bo$14bo$11b3o$11b3o3$18bo$19bo$17b3o!