For a third type of oscillator map, how about implementing heat maps? Every pixel is colored depending on how many times the corresponding cell changed state in the oscillator's evolutionary cycle (for 2-state rules this value will always be even). Here's a statorless p13:
Code: Select all
x = 30, y = 30, rule = B3/S23
9b2o8bobo$8b3o8bobo$19bobo$7bo2bo9bo$8bobo10b2o$8bo11bo2$3bo6bo7b3o4bo$bo2b2o
3b3o2b2o2bo6bob3o$2o6bobo3b2o2bo3bobobo$2ob2o2b3o12bo4b3o$8bo11b3o3$8b2o10b2o
$8b2o10b2o3$7b3o11bo$3o4bo12b3o2b2ob2o$3bobobo3bo2b2o3bobo6b2o$3obo6bo2b2o2b
3o3b2o2bo$4bo4b3o7bo6bo2$9bo11bo$7b2o10bobo$9bo9bo2bo$8bobo$8bobo8b3o$8bobo8b
2o!
Here is the corresponding map of this p13:
Code: Select all
# 184 x 2, 192 x 4, 40 x 6, 24 x 8
x = 32, y = 32, rule = //5
11.B8.B$9.AC2B6.2BCA$8.A4B6.4BA$8.AD2BA6.A2BDA$8.2BC2BA4.A2BC2B$8.2B2D
2A4.2A2D2B$8.ABC2BA4.A2BCBA$8.3ACBA4.ABC3A$2.2A2B2A2.2BCA.2A.AC2B2.2A
2B2A$.ABD3BA2.A2B6A2BA2.A3BDBA$.C2BCDCABA.AB.4A.BA.ABACDC2BC$5BDBC2BA
4.2A4.A2BCBD5B$.2BABA2BC2B10.2BC2BABA2B$4.6A12.6A$9.2A10.2A$8.4A8.4A$
8.4A8.4A$9.2A10.2A$4.6A12.6A$.2BABA2BC2B10.2BC2BABA2B$5BDBC2BA4.2A4.A
2BCBD5B$.C2BCDCABA.AB.4A.BA.ABACDC2BC$.ABD3BA2.A2B6A2BA2.A3BDBA$2.2A2B
2A2.2BCA.2A.AC2B2.2A2B2A$8.3ACBA4.ABC3A$8.ABC2BA4.A2BCBA$8.2B2D2A4.2A
2D2B$8.2BC2BA4.A2BC2B$8.AD2BA6.A2BDA$8.A4B6.4BA$9.AC2B6.2BCA$11.B8.B!
[[ COLOR 1 #66FFFF COLOR 2 #66FF66 COLOR 3 #FFFF66 COLOR 4 #FF6666 GRID GRIDMAJOR 0 ZOOM 8 VIEWONLY
COLOR LABEL #66FFFF LABEL -6 9 8 "█ 2"
COLOR LABEL #66FF66 LABEL -6 13 8 "█ 4"
COLOR LABEL #FFFF66 LABEL -6 17 8 "█ 6"
COLOR LABEL #FF6666 LABEL -6 21 8 "█ 8" ]]
For 2-state rules there will be no more than p/2 colours for an oscillator of period p (compared to a frequency map, which has at most p or p+1 colours depending on whether 0 is counted), so these should be overall less complex.
If of any use, here is the commit that implemented heat maps in Oscilloscope:
https://github.com/rei1024/oscilloscope ... 99bfa2b942
----
In the draw menu, would it be possible for icons to be displayed to the right of their colours instead of the left, as well as always be displayed if the rule has icons (rather than only when icons are toggled on)? This would make things more like Golly's draw interface:
Code: Select all
x = 2, y = 2, rule = JvN29
MP$NO!
[[ ICONS ]]

- image.png (7.82 KiB) Viewed 1888 times
Some icons in the Draw menu as well as in Help > Info > Pattern can visually intrude on the dark border space to the right and bottom of the squares in which they're displayed (note the stray whitish pixels):
Code: Select all
x = 1, y = 1, rule = sphere
o!
[[ ICONS ]]
@RULE sphere
Override the default colors and icons for Life (B3/S23).
@TABLE
n_states:2
neighborhood:Moore
symmetries:none
# do nothing
@COLORS
0 255 255 255 white (matches icon background below)
1 54 54 194 dark blue (average color of icon below)
@ICONS
XPM
/* width height num_colors chars_per_pixel */
"31 31 78 2"
/* colors */
".. c #FFFFFF" white background
"BA c #CECEDE"
"CA c #7B7BAD"
"DA c #4A4A84"
"EA c #18187B"
"FA c #08006B"
"GA c #18186B"
"HA c #29297B"
"IA c #6B6BAD"
"JA c #ADADDE"
"KA c #EFF7FF"
"LA c #ADADC6"
"MA c #39398C"
"NA c #3939BD"
"OA c #7B7BCE"
"PA c #ADB5DE"
"AB c #8C8CD6"
"BB c #4A4A9C"
"CB c #18188C"
"DB c #EFEFEF"
"EB c #EFEFFF"
"FB c #525A9C"
"GB c #08088C"
"HB c #ADADE7"
"IB c #DEDEEF"
"JB c #D6D6F7"
"KB c #DEE7F7"
"LB c #BDBDEF"
"MB c #525ABD"
"NB c #21219C"
"OB c #292984"
"PB c #CECEE7"
"AC c #ADB5CE"
"BC c #2929BD"
"CC c #7B7BDE"
"DC c #BDC6E7"
"EC c #CECEF7"
"FC c #8C8CE7"
"GC c #4242C6"
"HC c #A5A5BD"
"IC c #08087B"
"JC c #3939CE"
"KC c #5A5AC6"
"LC c #BDBDF7"
"MC c #BDBDDE"
"NC c #6B6BD6"
"OC c #9494DE"
"PC c #3931DE"
"AD c #1818AD"
"BD c #2929CE"
"CD c #9C9CC6"
"DD c #10087B"
"ED c #9C9CBD"
"FD c #1818B5"
"GD c #1818C6"
"HD c #847BCE"
"ID c #181094"
"JD c #6B6BCE"
"KD c #7B7BB5"
"LD c #2121AD"
"MD c #BDC6D6"
"ND c #0808AD"
"OD c #4A42B5"
"PD c #00009C"
"AE c #3942BD"
"BE c #3129B5"
"CE c #B5B5CE"
"DE c #0000BD"
"EE c #0000CE"
"FE c #0000DE"
"GE c #42427B"
"HE c #C6CECE"
"IE c #0000EF"
"JE c #9494AD"
"KE c #F7FFEF"
"LE c #10086B"
"ME c #7B849C"
"NE c #0000F7"
/* icon for state 1 */
".............................................................."
".............................................................."
"......................BACADAEAFAGAHAIAJA......................"
"................KALAMAFANAOAJAPAJAABBBCBEAIADB................"
"..............EBFBGBNAHBIBDBJBKAKBEBJBLBMBNBOBPB.............."
"............ACHABCCCDCECIBPBJBPBIBPBJBIBECFCGCCBCAKA.........."
"..........HCICJCKCLBLCLBMCLBLBLBLBMCLBLBMCLCNCJCCBCAKA........"
"........DBOBBCJCCCJAJAJAJAJAJAJAJAJAJAJAJAJAOCJCPCICAC........"
"......KADAADBDBCABABOCABOCOCOCOCABOCABOCABCDFCJCBDBCDDBA......"
"......EDGBFDGDADCCABOAOAOAOAOAOAOAOAHDOAHDCCCCNAADGDIDMA......"
"....KAHAADFDFDADJDMBOAJDJDJDJDJDKDJDJDJDJDJDJDLDFDFDFDICBA...."
"....MDFANDNDNDADODMBMBMBMBMBMBMBKCKCMBMBMBMBODADNDNDNDGBIA...."
"....CAGBNDPDNDPDADGCODODODODODODNAODODGCODAEBCPDNDPDNDPDGA...."
"....OBPDPDNDPDNDNDADBCBEBCBEBCBCBEBCBCBCNAADPDNDNDPDPDNDICPB.."
"....ICNDNDPDNDNDNDPDNDADADADADADADADADADNDNDNDNDNDNDNDPDGBCE.."
"....FANDNDDENDNDNDDENDDENDNDNDNDNDNDNDNDNDNDNDNDNDNDNDNDGBLA.."
"....FANDDENDDEDENDDEDENDDENDDEDEDEDEDEDEDEDEDEDEDENDDEDEGBED.."
"....GANDEEDEDEDEDEDEDEDEDEDEDEDENDDENDDEDEDEDEDEDEDEDEDEGBLA.."
"....BBPDEEDEEEDEEEDEEEDEEEDEDEDEEEDEEEDEDEDEDEDEEEDEEEDEFABA.."
"....EDGBDEEEDEEEEEEEDEEEDEEEEEEEEEEEEEEEEEEEEEEEEEDEEENDGADB.."
"....KBICDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEGBDA...."
"......FBNDFEFEEEEEEEEEFEEEEEFEEEEEEEEEEEEEEEEEEEEEFEDEICHC...."
"......IBEADEFEFEEEFEFEFEFEFEEEFEFEFEFEFEFEFEFEFEFEDEGBGEDB...."
"........LAGBFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFENDGAHE......"
"..........FBNDFEFEIEFEFEIEIEIEFEIEFEFEIEFEFEFEFEEEDDJEKE......"
"..........EBFBIDEEIEIEIEFEFEFEIEFEIEIEIEIEIEIENDLEMEKE........"
"..............CDGBDEIEIENENEIEIEIEIEIEIEIEGDPDGAJEKE.........."
"................BAOBGBADFEIENEIENEIEIEEENDFAGECEKE............"
"....................CDBBDDPDIDNDADPDICEAGEJEDB................"
"........................EBBALAEDEDHCMCDBKE...................."
".............................................................."
Is it intended that "Last Delete" persists into future viewer popups, or should it be reset upon opening a subsequent viewer?
The top boundary and bottom boundary appear to "flicker" slightly between two different thicknesses as the shape grows. The top-left and bottom-right boundaries stay somewhat constant by comparison. I don't know if a similar visual result to this is achievable for the top and bottom boundaries.
Code: Select all
x = 1, y = 1, rule = /123456/3H
A!
[[ AUTOSTART ZOOM -4.0 ]]
In this, the left and right boundaries appear discontinuous (in terms of the alive cells) when zoomed out even though zooming in shows that they are indeed continuous. Is this fixable somehow?
Code: Select all
x = 1, y = 1, rule = /1234/3V
o!
[[ STARTFROM 512 ZOOM -4 ANGLE 45 ]]
Is
this post supposed to contain a functional paste command? If so, it doesn't appear to work (however the post quoting it does work).
How is cell shader selection supposed to work? This uses Mono, which implies the Basic shader gets used, but if we look at Settings > Display, "Age" is selected, rather than "Bas", which I'm not sure is right:
Code: Select all
x = 1, y = 1, rule = B1c2c3e4r5i/S01c3i
o!
[[ STARTFROM 128 ZOOM 2 THEME Mono ]]
These six setups should be rotationally equivalent to each other, however only the first and fourth of these six work as expected: (also, pausing these will cause the history trail to disappear as mentioned earlier)
Code: Select all
# intersection of alive cells is mirror-symmetric, history trails overlap perfectly
x = 1, y = 1, rule = B/SL
!
[[ AUTOSTART AUTOFIT
PASTET EVERY 2 0 PASTEDELTA 2 0 PASTE o! 0 0
PASTET EVERY 2 1 PASTEDELTA 2 0 PASTE o! 1 0
]]
Code: Select all
# intersection of alive cells is not mirror-symmetric, history trails do not overlap perfectly
x = 1, y = 1, rule = B/SL
!
[[ AUTOSTART AUTOFIT
PASTET EVERY 2 0 PASTEDELTA 1 1 PASTE o! 0 0
PASTET EVERY 2 1 PASTEDELTA 1 1 PASTE o! 1 0
]]
Code: Select all
# intersection of alive cells is not mirror-symmetric, history trails do not overlap perfectly
x = 1, y = 1, rule = B/SL
!
[[ AUTOSTART AUTOFIT
PASTET EVERY 2 0 PASTEDELTA -1 1 PASTE o! 0 0
PASTET EVERY 2 1 PASTEDELTA -1 1 PASTE o! -1 0
]]
Code: Select all
# intersection of alive cells is mirror-symmetric, history trails overlap perfectly
x = 1, y = 1, rule = B/SL
!
[[ AUTOSTART AUTOFIT
PASTET EVERY 2 0 PASTEDELTA -2 0 PASTE o! 0 0
PASTET EVERY 2 1 PASTEDELTA -2 0 PASTE o! -1 0
]]
Code: Select all
# intersection of alive cells is not mirror-symmetric, history trails do not overlap perfectly
x = 1, y = 1, rule = B/SL
!
[[ AUTOSTART AUTOFIT
PASTET EVERY 2 0 PASTEDELTA -1 -1 PASTE o! 0 0
PASTET EVERY 2 1 PASTEDELTA -1 -1 PASTE o! 0 -1
]]
Code: Select all
# intersection of alive cells is not mirror-symmetric, history trails do not overlap perfectly
x = 1, y = 1, rule = B/SL
!
[[ AUTOSTART AUTOFIT
PASTET EVERY 2 0 PASTEDELTA 1 -1 PASTE o! 0 0
PASTET EVERY 2 1 PASTEDELTA 1 -1 PASTE o! 0 -1
]]
Equivalent hexagonal patterns that move diagonally, all of which seem to work correctly unlike the second, third, fifth and sixth orthogonal triangular demonstrations (the overlap is mirror symmetric):
Code: Select all
x = 1, y = 1, rule = B/SH
!
[[ AUTOSTART AUTOFIT
PASTET EVERY 2 0 PASTEDELTA -1 -2 PASTE o! 0 0
PASTET EVERY 2 1 PASTEDELTA -1 -2 PASTE o! -1 -1
]]
Code: Select all
x = 1, y = 1, rule = B/SH
!
[[ AUTOSTART AUTOFIT
PASTET EVERY 2 0 PASTEDELTA 1 -1 PASTE o! 0 0
PASTET EVERY 2 1 PASTEDELTA 1 -1 PASTE o! 1 0
]]
Code: Select all
x = 1, y = 1, rule = B/SH
!
[[ AUTOSTART AUTOFIT
PASTET EVERY 2 0 PASTEDELTA 2 1 PASTE o! 0 0
PASTET EVERY 2 1 PASTEDELTA 2 1 PASTE o! 1 0
]]
Code: Select all
x = 1, y = 1, rule = B/SH
!
[[ AUTOSTART AUTOFIT
PASTET EVERY 2 0 PASTEDELTA 1 2 PASTE o! 0 0
PASTET EVERY 2 1 PASTEDELTA 1 2 PASTE o! 1 1
]]
Code: Select all
x = 1, y = 1, rule = B/SH
!
[[ AUTOSTART AUTOFIT
PASTET EVERY 2 0 PASTEDELTA -1 1 PASTE o! 0 0
PASTET EVERY 2 1 PASTEDELTA -1 1 PASTE o! -1 0
]]
Code: Select all
x = 1, y = 1, rule = B/SH
!
[[ AUTOSTART AUTOFIT
PASTET EVERY 2 0 PASTEDELTA -2 -1 PASTE o! 0 0
PASTET EVERY 2 1 PASTEDELTA -2 -1 PASTE o! -1 0
]]
The four diagonal directions on a square grid also work as expected, producing a mirror-symmetric effect:
Code: Select all
x = 1, y = 1, rule = B/S
!
[[ AUTOSTART AUTOFIT
PASTET EVERY 2 0 PASTEDELTA 1 -1 PASTE o! 0 0
PASTET EVERY 2 1 PASTEDELTA 1 -1 PASTE o! 0 -1
]]
Code: Select all
x = 1, y = 1, rule = B/S
!
[[ AUTOSTART AUTOFIT
PASTET EVERY 2 0 PASTEDELTA 1 1 PASTE o! 0 0
PASTET EVERY 2 1 PASTEDELTA 1 1 PASTE o! 1 0
]]
Code: Select all
x = 1, y = 1, rule = B/S
!
[[ AUTOSTART AUTOFIT
PASTET EVERY 2 0 PASTEDELTA -1 1 PASTE o! 0 0
PASTET EVERY 2 1 PASTEDELTA -1 1 PASTE o! 0 1
]]
Code: Select all
x = 1, y = 1, rule = B/S
!
[[ AUTOSTART AUTOFIT
PASTET EVERY 2 0 PASTEDELTA -1 -1 PASTE o! 0 0
PASTET EVERY 2 1 PASTEDELTA -1 -1 PASTE o! -1 0
]]
At T=1, a population of 0 is displayed, despite there being one alive cell clearly present. All subsequent generations appear correctly.
Code: Select all
x = 1, y = 1, rule = M0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
!
[[ MAXGRIDSIZE 9 SHOWGENSTATS PASTET EVERY 1 PASTEDELTA 0 1 PASTE o! 255 -256 GPS 1 ]]
I am not sure if the top-left and bottom-right boundary cells should be present in the period/frequency map:
Code: Select all
x = 1, y = 1, rule = B/SHInvestigator:P1,1
J!
[[ AUTOIDENTIFY ]]