Reversible Wireless World

For discussion of other cellular automata.
bprentice
Posts: 686
Joined: September 10th, 2009, 6:20 pm
Location: Coos Bay, Oregon

Re: Reversible Wireless World

Post by bprentice » March 17th, 2014, 12:26 am

bprentice wrote:Can the behavior of a pattern with a length of 12 + n be predicted without running the pattern?
If n > 4 it can. Here is a python script that will show the behavior of the first 1000 patterns:

Code: Select all

#! /usr/bin/python

for i in range(0, 1000):
  j = i % 3
  if j == 0:
    print i + 17, "C/" + str(i * 6 + 83)
  elif j == 1:
    print i + 17, "C/" + str((i - 1) * 2 + 29)
  elif j == 2:
    print i + 17, (i - 2) * 74 + 1456 
bprentice wrote:Is there a slowest ship?
No! If an orthogonal ship has a speed C/s then the following python script can be used to compute the length of the smallest ship that is slower than C/s.

Code: Select all

#! /usr/bin/python

import sys

n = sys.argv[1]
i = 0
while (i * 6 + 83) <= int(n):
  i += 3
print i + 17, "C/" + str(i * 6 + 83)
For example if s = 1,000,000 then the first slower ship has a length of 166,670.

This seems to be an unusual rule. Are there any other known rules that support an infinite number of orthogonal ship speeds?

Brian Prentice

User avatar
alexv
Posts: 136
Joined: February 3rd, 2014, 11:14 am

Re: Reversible Wireless World

Post by alexv » March 18th, 2014, 4:15 am

Let's recall a comment about a rule with conserved energy missed without trace somewhere above
viewtopic.php?f=11&t=1293&start=50#p11095
It has chaotic behavior, but recently I found similar rule with circuit-like patterns. It is
simply application of the same second-order trick to life-like rule B4/S4.

Code: Select all

@RULE Revfour

Reversible second order rule from B4/S4
Conserves "energy"

@TREE

num_states=4
num_neighbors=8
num_nodes=29
1 0 2 1 3
1 1 3 0 2
2 0 0 0 0
2 0 1 0 1
2 1 0 1 0
3 2 2 2 2
3 2 3 2 3
3 3 4 3 4
3 4 2 4 2
4 5 5 5 5
4 5 6 5 6
4 6 7 6 7
4 7 8 7 8
4 8 5 8 5
5 9 10 9 10
5 10 11 10 11
5 11 12 11 12
5 12 13 12 13
5 13 9 13 9
6 14 15 14 15
6 15 16 15 16
6 16 17 16 17
6 17 18 17 18
7 19 20 19 20
7 20 21 20 21
7 21 22 21 22
8 23 24 23 24
8 24 25 24 25
9 26 27 26 27

@COLORS

0 255 255 255
1 255 0 0
2 127 255 0
3 0 0 255
Below are some patterns.
Loop with signal:

Code: Select all

x = 20, y = 20, rule = Revfour
2.16C$.C16.C$C18.C$C18.C$C18.C$C18.C$C18.C$C18.C$C18.C$C18.C$C18.C$C
18.C$C18.C$C18.C$C18.C$C18.C$C18.C$C18.C$.C11.AB3.C$2.16C!
More complex loop with signal

Code: Select all

x = 23, y = 17, rule = Revfour
18.3C$17.C3.C$16.C5.C$18.C3.C$18.C3.C$18.C3.C$18.C3.C$18.C3.C$18.C3.C
$2.C15.C3.C$.C15.C4.C$C2.14C5.C$C21.C$C21.C$C21.C$.C11.BA6.C$2.19C!
Line with two signals

Code: Select all

x = 18, y = 3, rule = Revfour
2.BA$18C$14.AB!
Small variation of previous pattern produces big changes

Code: Select all

x = 19, y = 3, rule = Revfour
2.BA$19C$15.AB!
The line with signal in anti-world

Code: Select all

x = 30, y = 6, rule = Revfour
30C$30C$2C26.2C$6CAB22C$30C$30C!
Python script for calculation energy, energy-revfour.py

Code: Select all

 Calculates energy for Revfour rule

from glife import rect
from time import time
import golly as g

r = rect( g.getselrect() )
if r.empty: 
  r = rect( g.getrect() )
  if r.empty: g.exit("No selection and the pattern is empty.")
  r.top = r.top - 1
  r.height = r.height + 2
  r.left = r.left-1
  r.width = r.width + 2

oldsecs = time()
maxstate = g.numstates() - 1
En1 = 0
En2 = 0
sn1 = [-1, 1, -1, 1]
sn2 = [-1,-1, 1, 1] 

for row in xrange(r.top, r.top + r.height):
       for col in xrange(r.left, r.left + r.width):
         cell = g.getcell(col, row)
         neib = g.getcell(col-1, row)
         En1 = En1 + (1 - sn1[cell]*sn2[neib])
         En2 = En2 + (1 - sn2[cell]*sn1[neib])
         neib = g.getcell(col, row-1)
         En1 = En1 + (1 - sn1[cell]*sn2[neib])
         En2 = En2 + (1 - sn2[cell]*sn1[neib])
         neib = g.getcell(col-1, row-1)
         En1 = En1 + (1 - sn1[cell]*sn2[neib])
         En2 = En2 + (1 - sn2[cell]*sn1[neib])
         neib = g.getcell(col-1, row+1)
         En1 = En1 + (1 - sn1[cell]*sn2[neib])
         En2 = En2 + (1 - sn2[cell]*sn1[neib])
                
g.show("Energies: " + str(En1/2) + "+" + str(En2/2) + "=" + str((En1+En2)/2))


"Wrong" loop - almost complete chaos after half million steps

Code: Select all

x = 20, y = 20, rule = Revfour
20C$C18.C$C18.C$C18.C$C18.C$C18.C$C18.C$C18.C$C18.C$C18.C$C18.C$C18.C
$C18.C$C18.C$C18.C$C18.C$C18.C$C18.C$C8.AB8.C$20C!
Yet, I still do not even know, how to realize wires crossing for this rule ...

Alexander

User avatar
alexv
Posts: 136
Joined: February 3rd, 2014, 11:14 am

Re: Reversible Wireless World

Post by alexv » March 20th, 2014, 5:03 am

Brian,

Relating your patterns. I found "random gliders" on Q2R2vN CA (see link to comment referenced in previous post).
They need some line to organize a limited motion instead of mirrors in your case, but also has oscillating
behavior with nontrivial structure due to two interacting processes (motion of holes inside line and
motion of signal on the line). Below is rather huge oscillator

Code: Select all

x = 1032, y = 2, rule = Q2R2vN
219.BA$1032C!
Alexander

bprentice
Posts: 686
Joined: September 10th, 2009, 6:20 pm
Location: Coos Bay, Oregon

Re: Reversible Wireless World

Post by bprentice » March 20th, 2014, 9:40 am

Alexander,
alexv wrote:Below is rather huge oscillator

x = 1032, y = 2, rule = Q2R2vN
219.BA$1032C!
Fascinating!

Ships with infinitely slow speeds or oscillators with infinitely large periods, which is more interesting to members of this Forum?

I am enjoying exploring these reversible rules. They have distinctly different rhythms compared to the non-reversible rules that I am used to.

Brian

User avatar
alexv
Posts: 136
Joined: February 3rd, 2014, 11:14 am

Re: Reversible Wireless World

Post by alexv » March 20th, 2014, 10:55 am

Brian

BTW, the period huge, but not infinite. Consider smaller lines:
Period = 183048

Code: Select all

x = 57, y = 2, rule = Q2R2vN
57C$24.BA!
The same line, but signal is shifted left on unit
Period = 45420

Code: Select all

x = 57, y = 2, rule = Q2R2vN
57C$23.BA!
Let's continue - the box made from the first line and three lines with some gaps -
signal jumping over gaps and still walking around after 100 millions steps

Code: Select all

#Random motion of signal on a loop
x = 60, y = 60, rule = Q2R2vN
.57C$25.BA32.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$
C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C
58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.
C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C
58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.
C$C58.C$C$2.57C!
Now again with shifted signal, already after 500 steps signal evaporates inside the box

Code: Select all

#Unit signal position change causes "evaporation" after ~500 steps
x = 60, y = 60, rule = Q2R2vN
.57C$24.BA33.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$
C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C
58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.
C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C
58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.C$C58.
C$C58.C$C$2.57C!
Alexander

bprentice
Posts: 686
Joined: September 10th, 2009, 6:20 pm
Location: Coos Bay, Oregon

Re: Reversible Wireless World

Post by bprentice » March 20th, 2014, 1:28 pm

Alexander,

Starting with a line length of 10 cells and positioning the signal 2 cells from the right and then successively increasing the line length by one cell on the right yields oscillators with this sequence of lengths verses periods:

10 150
11 534
12 222
13 402
14 1050
15 288
16 1050
17 3354
18 1788
19 2316
20 4002
21 2178
22 10242
23 1788
24 13674
25 15366
26 28470
27 6852
28 13578
29 44538
30 66876
31 25194
32 19290
33 37032
34 44736
35 18600
36 324474
37 148770
38 107490
39 273642
40 687054
41 594780
42 1440870

From these numbers it might be difficult to predict the periods of larger oscillators in this series.

Brian

User avatar
alexv
Posts: 136
Joined: February 3rd, 2014, 11:14 am

Re: Reversible Wireless World

Post by alexv » March 20th, 2014, 4:24 pm

This rule is working in rather original way even for regular motion. Below is a diamond-like loop with signal
moving around and ... deforming the loop to inverse direction of motion

Code: Select all

x = 23, y = 29, rule = Q2R2vN
12.C$10.C2$8.C2.C.BC$13.CA$6.C2.C3.C2.C2$4.C2.C7.C2.C2$2.C2.C11.C2.C
2$C2.C15.C2.C2$.C19.C2$C2.C18.C2$2.C2.C15.C2$4.C2.C11.C2.C2$6.C2.C7.C
2.C2$8.C2.C3.C2.C2$10.C2.C2.C2$14.C$12.C!
Alexander

bprentice
Posts: 686
Joined: September 10th, 2009, 6:20 pm
Location: Coos Bay, Oregon

Re: Reversible Wireless World

Post by bprentice » March 20th, 2014, 7:43 pm

alexv wrote:This rule is working in rather original way even for regular motion. Below is a diamond-like loop with signal moving around and ... deforming the loop to inverse direction of motion
Actually this is not too unusual. I've seen the same thing in several rules. Attached is an archive of patterns for my Rule 005. Notice the behavior of patterns O014, O018, O019, O027 and O032.
Rule 005.zip
(34.79 KiB) Downloaded 171 times
Brian

User avatar
alexv
Posts: 136
Joined: February 3rd, 2014, 11:14 am

Re: Reversible Wireless World

Post by alexv » March 21st, 2014, 4:38 am

bprentice wrote: Actually this is not too unusual. I've seen the same thing in several rules. Attached is an archive of patterns for my Rule 005. Notice the behavior of patterns O014, O018, O019, O027 and O032.
Similar, but I feel the difference. IMHO, the movable blinking blocks are also rather common in other patterns,
but I tried to avoid them due to problem with synchronization. The version of the same loop with blinking is

Code: Select all

x = 23, y = 29, rule = Q2R2vN
12.C$10.C2$8.C2.C2.C$13.BA$6.C2.C3.C2.C2$4.C2.C7.C2.C2$2.C2.C11.C2.C
2$C2.C15.C2.C2$.C19.C2$C2.C18.C2$2.C2.C15.C2$4.C2.C11.C2.C2$6.C2.C7.C
2.C2$8.C2.C3.C2.C2$10.C2.C2.C2$14.C$12.C!
In fact, your rule 005 resembles rule I myself used actively quite a long time ago,
but later was "disappointed" a bit due to advantages of "ants" with circuit construction

Code: Select all

@RULE Revtwo

Reversible second order rule 
from tb3 list
0 1 1
1 0 1

@TREE

num_states=4
num_neighbors=8
num_nodes=23
1 0 2 1 3
1 0 3 1 2
1 1 2 0 3
2 0 0 0 0
2 1 2 1 2
2 2 0 2 0
3 3 3 3 3
3 4 5 4 5
3 5 3 5 3
4 6 6 6 6
4 7 8 7 8
4 8 6 8 6
5 9 9 9 9
5 10 11 10 11
6 12 13 12 13
6 13 12 13 12
6 12 12 12 12
7 14 15 14 15
7 15 16 15 16
7 16 16 16 16
8 17 18 17 18
8 18 19 18 19
9 20 21 20 21
Edit: comment in rule with tb3 list is corrected

I even found the pattern with movable blinking blocks such as you are mentioning

Code: Select all

x = 12, y = 12, rule = Revtwo
.A$11.B9$B4.BA4.A$5.BA!
together with some funny patterns (resembling some old computer game) such as

Code: Select all

x = 27, y = 17, rule = Revtwo
.A$21.B5$25.A9$A16.A8.A$17.A!
Did you try that simplified version?

Alexander

User avatar
alexv
Posts: 136
Joined: February 3rd, 2014, 11:14 am

Re: Reversible Wireless World

Post by alexv » March 21st, 2014, 9:34 am

The Q2R2vN conserves some value (energy), see python script
viewtopic.php?f=11&t=1293&start=50#p11114

The Brian's Rule 005 also conserves some value, because belongs to rule with side=corner tb3 list.
Below is python script for calculation

Code: Select all

# Calculates energy for corner-side reversible rule

from glife import rect
from time import time
import golly as g

r = rect( g.getselrect() )
if r.empty: 
  r = rect( g.getrect() )
  if r.empty: g.exit("No selection and the pattern is empty.")
  r.top = r.top - 1
  r.height = r.height + 2
  r.left = r.left-1
  r.width = r.width + 2

oldsecs = time()
maxstate = g.numstates() - 1
En1 = 0
En2 = 0
sn1 = [-1, 1, -1, 1]
sn2 = [-1,-1, 1, 1] 

for row in xrange(r.top, r.top + r.height):
       for col in xrange(r.left, r.left + r.width):
         cell = g.getcell(col, row)
         neib = g.getcell(col-1, row)
         En1 = En1 - (1 - sn1[cell]*sn2[neib])
         En2 = En2 - (1 - sn2[cell]*sn1[neib])
         neib = g.getcell(col, row-1)
         En1 = En1 - (1 - sn1[cell]*sn2[neib])
         En2 = En2 - (1 - sn2[cell]*sn1[neib])
         neib = g.getcell(col-1, row-1)
         En1 = En1 + (1 - sn1[cell]*sn2[neib])
         En2 = En2 + (1 - sn2[cell]*sn1[neib])
         neib = g.getcell(col-1, row+1)
         En1 = En1 + (1 - sn1[cell]*sn2[neib])
         En2 = En2 + (1 - sn2[cell]*sn1[neib])
                
g.show("Energies: " + str(En1/2) + "+" + str(En2/2) + "=" + str((En1+En2)/2))
It computes selection or whole pattern, if selection is empty. Selection should include empty cells
on boundary because similarly with Q2R2 energy is due to difference between states of adjacent
cells. Two values is shown by some reason, but conserved the sum.

But, Revtwo CA I just metioned also conserves some value, yet it is a more tricky

Code: Select all

# Calculates energy for Revtwo rule

from glife import rect
from time import time
import golly as g

r = rect( g.getselrect() )
if r.empty: 
  r = rect( g.getrect() )
  if r.empty: g.exit("No selection and the pattern is empty.")
  r.top = r.top - 1
  r.height = r.height + 2
  r.left = r.left-1
  r.width = r.width + 2

oldsecs = time()
maxstate = g.numstates() - 1
En = 0
sn1 = [-1, 1, -1, 1]
sn2 = [-1,-1, 1, 1] 

for row in xrange(r.top, r.top + r.height):
       for col in xrange(r.left, r.left + r.width + 1):
         cell = g.getcell(col, row)
         En = En + 2*(1 - sn1[cell]*sn2[cell])
         neib = g.getcell(col-1, row)
         En = En + 2*(1 - sn1[cell]*sn2[neib])
         En = En + 2*(1 - sn2[cell]*sn1[neib])
         neib = g.getcell(col, row-1)
         En = En + 2*(1 - sn1[cell]*sn2[neib])
         En = En + 2*(1 - sn2[cell]*sn1[neib])
         neib = g.getcell(col-1, row-1)
         En = En - 3*(1 - sn1[cell]*sn2[neib])
         En = En - 3*(1 - sn2[cell]*sn1[neib])
         neib = g.getcell(col-1, row+1)
         En = En - 3*(1 - sn1[cell]*sn2[neib])
         En = En - 3*(1 - sn2[cell]*sn1[neib])

            
g.show("Energy: " + str(-En/2))
The energies are useful for check, for example I found an error in previous post, because
initially supposed that my old Revtwo rule is side=corner, i.e. confused that with other
old rule (sorry for names :wink: )

Code: Select all

@RULE Revdoubl

Reversible second order rule 
from tb3 list
0 1 1
1 1 1

@TREE

num_states=4
num_neighbors=8
num_nodes=22
1 0 2 1 3
1 1 3 0 2
2 0 0 0 0
2 0 1 0 1
2 1 0 1 0
3 2 2 2 2
3 3 4 3 4
3 4 2 4 2
4 5 5 5 5
4 6 7 6 7
4 7 5 7 5
5 8 8 8 8
5 9 10 9 10
6 11 12 11 12
6 12 11 12 11
6 11 11 11 11
7 13 14 13 14
7 14 15 14 15
7 15 15 15 15
8 16 17 16 17
8 17 18 17 18
9 19 20 19 20
Alexander

bprentice
Posts: 686
Joined: September 10th, 2009, 6:20 pm
Location: Coos Bay, Oregon

Re: Reversible Wireless World

Post by bprentice » March 21st, 2014, 10:15 am

Alexander,

Before you corrected rule Revtwo I ran your two examples on 'Reversible Square Cell 3' using table:

0 1 1
1 1 1

and found that they didn't work. I then tried them again using table:

0 1 1
1 2 2

and surprisingly they both worked. It seems that the two tables:

0 1 1
1 2 2

and

0 1 1
1 0 1

are closely related. I haven't explored any of these simple tables yet.

Brian

User avatar
alexv
Posts: 136
Joined: February 3rd, 2014, 11:14 am

Re: Reversible Wireless World

Post by alexv » March 21st, 2014, 11:24 am

Brian

I added one line to Rule005 to make that working in both world and anti-world versions.

Code: Select all

@RULE Revcons6

Reversible second order rule 
from tb3 list
0 1 1
0 2 2
1 2 2
1 3 3

@TREE

num_states=4
num_neighbors=8
num_nodes=40
1 0 2 1 3
1 1 2 0 3
1 1 3 0 2
1 0 3 1 2
2 0 0 0 0
2 0 1 0 1
2 1 0 1 0
2 0 2 0 2
2 2 0 2 0
2 0 3 0 3
2 3 0 3 0
3 4 4 4 4
3 5 6 5 6
3 6 4 6 4
3 4 7 4 7
3 7 8 7 8
3 8 4 8 4
3 4 9 4 9
3 9 10 9 10
4 11 11 11 11
4 12 13 12 13
4 13 11 13 11
4 14 15 14 15
4 15 16 15 16
4 11 17 11 17
4 17 18 17 18
5 19 19 19 19
5 20 21 20 21
5 22 23 22 23
5 24 25 24 25
6 26 27 26 27
6 27 28 27 28
6 28 29 28 29
6 29 26 29 26
7 30 31 30 31
7 31 32 31 32
7 32 33 32 33
8 34 35 34 35
8 35 36 35 36
9 37 38 37 38
Below is "invasion from anti-world" example

Code: Select all

x = 16, y = 15, rule = Revcons6
.C12.C$C.12C.C$.14C$.14C$.14C$.14C$.14C$.6C2.6C$.5C.2C.5C$.14C$.14C$.
14C$.14C$C.12C.C$.C12.C!
Alexander

bprentice
Posts: 686
Joined: September 10th, 2009, 6:20 pm
Location: Coos Bay, Oregon

Re: Reversible Wireless World

Post by bprentice » March 21st, 2014, 7:52 pm

bprentice wrote:I am enjoying exploring these reversible rules. They have distinctly different rhythms compared to the non-reversible rules that I am used to.
As an example of what I mean, here is a rule:

Code: Select all

@RULE BP01

@TREE

num_states=4
num_neighbors=8
num_nodes=32
1 0 2 1 3
1 1 2 0 3
1 0 3 1 2
2 0 0 0 0
2 0 1 0 1
2 1 0 1 0
2 0 2 0 2
2 2 0 2 0
3 3 3 3 3
3 4 5 4 5
3 5 3 5 3
3 3 6 3 6
3 6 7 6 7
3 7 3 7 3
4 8 8 8 8
4 9 10 9 10
4 10 8 10 8
4 11 12 11 12
4 12 13 12 13
5 14 14 14 14
5 15 16 15 16
5 17 18 17 18
6 19 20 19 20
6 20 21 20 21
6 21 19 21 19
6 19 19 19 19
7 22 23 22 23
7 23 24 23 24
7 24 25 24 25
8 26 27 26 27
8 27 28 27 28
9 29 30 29 30

@COLORS

0   0   0   0
1 255   0   0
2   0 255   0
3   0   0 255
and here is a period 7986 oscillator which puts on a splendid show:

Code: Select all

x = 45, y = 65, rule = BP01
.C6$13.B$44.B5$20.A$34.B14$12.B$33.B7$B$43.B8$19.2B$19.2A12$18.AB$7.
C11.BA10.C6$20.C!
Brian Prentice

User avatar
alexv
Posts: 136
Joined: February 3rd, 2014, 11:14 am

Re: Reversible Wireless World

Post by alexv » March 22nd, 2014, 8:25 am

Brian,

I think it was a good idea to write how you are obtaining rule in the comment to a file :P .
Only after comparison with rule trees generated from different lists I could guess that
you are using
0 1 1
1 2 2

Alexander

User avatar
alexv
Posts: 136
Joined: February 3rd, 2014, 11:14 am

Re: Reversible Wireless World

Post by alexv » March 22nd, 2014, 8:48 am

Reversible rules with many states and energy conservation may have even cooler rhythms
Below is such a rule (obtained from some unspecified source similarly with previous Brian's rule :P )

Code: Select all

@RULE RevConsers6

Reversible rule with six states 
and energy conservation

@TREE

num_states=6
num_neighbors=8
num_nodes=42
1 0 3 4 1 2 5
1 1 2 5 0 3 4
2 0 0 1 0 0 1
2 0 1 0 0 1 0
2 1 0 0 1 0 0
2 0 0 0 0 0 0
3 2 3 4 2 3 4
3 3 4 5 3 4 5
3 4 5 5 4 5 5
3 5 5 5 5 5 5
3 5 2 3 5 2 3
3 5 5 2 5 5 2
4 6 7 8 6 7 8
4 7 8 9 7 8 9
4 8 9 9 8 9 9
4 9 9 9 9 9 9
4 10 6 7 10 6 7
4 11 10 6 11 10 6
4 9 11 10 9 11 10
4 9 9 11 9 9 11
5 12 13 14 12 13 14
5 15 15 15 15 15 15
5 16 12 13 16 12 13
5 17 16 12 17 16 12
5 18 17 16 18 17 16
5 19 18 17 19 18 17
6 20 21 22 20 21 22
6 21 22 21 21 22 21
6 22 21 23 22 21 23
6 21 23 21 21 23 21
6 23 21 24 23 21 24
6 21 24 21 21 24 21
6 24 21 25 24 21 25
7 26 27 28 26 27 28
7 27 28 29 27 28 29
7 28 29 30 28 29 30
7 29 30 31 29 30 31
7 30 31 32 30 31 32
8 33 34 35 33 34 35
8 34 35 36 34 35 36
8 35 36 37 35 36 37
9 38 39 40 38 39 40

@COLORS

0 250 255 250
1 255 0 0
2 0 208 0
3 176 176 176
4 128 64 32
5 0 0 128
Billiard with few snakes-ships with period 24686

Code: Select all

x = 33, y = 27, rule = RevConsers6
13.2E12.2E$13.2E12.E.E$28.E.E$29.2E$8.2E10.AEC$8.2E5$25.2E$25.2E2$2E$
2E13.A2ED12.2E$31.2E4$2E23.2E$2E17.B2ED2.2E5$13.2E$13.2E!
Alexander

User avatar
alexv
Posts: 136
Joined: February 3rd, 2014, 11:14 am

Re: Reversible Wireless World

Post by alexv » March 26th, 2014, 1:58 pm

I did not provide reverse script for rule used in previous post. Here it is
reverse-3s6.py

Code: Select all

from glife import rect
from time import time
import golly as g

r = rect( g.getrect() )
if r.empty: g.exit("The pattern is empty.")

oldsecs = time()
maxstate = g.numstates() - 1
swp = [0, 3, 4, 1, 2, 5]

for row in xrange(r.top, r.top + r.height):
	for col in xrange(r.left, r.left + r.width):
		cell=g.getcell(col, row)
		cell = swp[cell]
		g.setcell(col, row, cell )


It is different from SlAnt, because other order of states used (an initial one)

Alexander

User avatar
alexv
Posts: 136
Joined: February 3rd, 2014, 11:14 am

Re: Reversible Wireless World

Post by alexv » April 3rd, 2014, 1:46 pm

"Endnote" :idea:

Despite of many different gliders and interesting behavior, the last rule does not look convenient for
construction of circuits. The glider with speed 2/7 seems appropriate for simple operations
because it may change direction from vertical to horizontal one. But there are subtle problems, e.g.
in implementations of swap operation I've met the distances between such gliders always were even

Code: Select all

x = 29, y = 33, rule = RevConsers6
4.2E11.2E$3.E.E11.E.E$2.E.E13.E.E$2.2E15.2E5$22.2E$21.E.E$20.E.E$20.
2E$DE$9.2E$8.E.E$7.E.E$7.2E$7.E.E$8.E.E$9.2E$DE$12.2E$12.E.E$13.E.E$
14.2E5$2.2E23.2E$2.E.E21.E.E$3.E.E19.E.E$4.2E19.2E!
On the other hand, in interaction gates used as a kernel for construction of more difficult things
I permanently have to set odd distance between the gliders, e.g

Code: Select all

x = 33, y = 16, rule = RevConsers6
18.2E9.2E$17.E.E9.E.E$16.E.E11.E.E$16.2E13.2E5$14.CEA7.2E$23.E.E$22.E
.E$21.E.E.E$21.2E.2E3$DE!
So for construction of circuits the simple WlAnt (or, even, simpler "Snakes") seems preferable

Alexander

User avatar
alexv
Posts: 136
Joined: February 3rd, 2014, 11:14 am

Re: Reversible Wireless World

Post by alexv » April 4th, 2014, 5:54 am

I mentioned earlier, that WlAnt-4 was initially designed for Penrose tiling. There are also couple old
posts here devoted to Penrose tiling. For completeness, below is a link to software with the "Penrose Ants"
and some other cellular automata (including two irreversible gliders well-known due to Ready software)

http://cc.embarcadero.com/Item/29794

05-Apr-2014 - archive is updated:
"true" Life.dpr (B3/S23) instead of LifeSpec.dpr (B3/S34) in dll examples


Alexander
Last edited by alexv on April 5th, 2014, 11:46 am, edited 2 times in total.

bprentice
Posts: 686
Joined: September 10th, 2009, 6:20 pm
Location: Coos Bay, Oregon

Re: Reversible Wireless World

Post by bprentice » April 4th, 2014, 2:05 pm

Alexander,

If you want people to view your work, please place it somewhere that is easily accessible. Embarcadero refuses to let me download and life is far too short to fight them.

Brian

User avatar
alexv
Posts: 136
Joined: February 3rd, 2014, 11:14 am

Re: Reversible Wireless World

Post by alexv » April 4th, 2014, 2:20 pm

Brian,

Try a copy from my cloud below as a temporary solution
https://cloud.mail.ru/public/da18b92b9407/carp.zip

05-Apr-2014 - archive above is also updated:
both "true" Life.dpr (B3/S23) with LifeSpec.dpr (B3/S34) now in dll examples
Embarcadero site is currently working and may be also used for download

Alexander

User avatar
alexv
Posts: 136
Joined: February 3rd, 2014, 11:14 am

Re: Reversible Wireless World

Post by alexv » May 10th, 2014, 8:47 am

:idea: "Diagonal" version of "Slow Ants" CA was found recently
http://ayvlasov.wordpress.com/2014/05/10/diagonal-ants/
Image
Below is archive with rule, patterns and scripts for inversion and energy calculation
Alexander
Attachments
sum2137.zip
archive with "diagonal ants"
(13.3 KiB) Downloaded 153 times

bprentice
Posts: 686
Joined: September 10th, 2009, 6:20 pm
Location: Coos Bay, Oregon

Re: Reversible Wireless World

Post by bprentice » May 11th, 2014, 9:14 pm

A Java implementation of Diagonal Ants is included in the following archive:

http://bprentice.webenet.net/Java%20Squ ... CA%202.zip

The program extends my basic Square Cell program which is briefly described in the file "Java Square Cell.html" which is included in the archive. The Java source code together with some example patterns are also included.

The program supports the generation of new random rules using the equation:
p1 * t + p2 * s + p3 * c = sum.

See: http://ayvlasov.wordpress.com/2014/05/10/diagonal-ants/

To generate a new rule, repeatedly hit the N key until an interesting rule is found.

Patterns can be reversed with the V key.

I will probably update the archive from time to time.

Brian Prentice

User avatar
alexv
Posts: 136
Joined: February 3rd, 2014, 11:14 am

Re: Reversible Wireless World

Post by alexv » May 12th, 2014, 5:41 am

Below is some paper+references about such CA with algebraic conditions
http://www.complex-systems.com/abstract ... 2_a03.html

It's more convenient sometimes to use such conditions with constrains, e.g.
"Digital zoo": s-c=0, s > 0, s < 8
http://ayvlasov.wordpress.com/2014/04/08/digital-zoo/
Image

Alexander

bprentice
Posts: 686
Joined: September 10th, 2009, 6:20 pm
Location: Coos Bay, Oregon

Re: Reversible Wireless World

Post by bprentice » May 12th, 2014, 3:18 pm

The rule that uses the equation 3t+s+3c=8 supports diagonal ships and orthogonal ships with three different speeds. Some of these have an infinite series of sizes. Interesting complex interactions are abundant. Perhaps the Golly rule tree for this rule would be of interest to members of this forum.

Brian Prentice

User avatar
alexv
Posts: 136
Joined: February 3rd, 2014, 11:14 am

Re: Reversible Wireless World

Post by alexv » May 12th, 2014, 4:40 pm

bprentice wrote:The rule that uses the equation 3t+s+3c=8 supports diagonal ships and orthogonal ships with three different speeds. Some of these have an infinite series of sizes. Interesting complex interactions are abundant. Perhaps the Golly rule tree for this rule would be of interest to members of this forum.

Brian Prentice
Below is example of dll library for CART, generating algebraic rule I presented. Hope that may help.
It is necessary to change CalcCells procedure to generate Golly trees using CART.

Code: Select all

library Sum2137s6;

uses
  {SysUtils, Classes,} CARules2Int;

{$R *.res}
{$E cll}

function LibVerCAR(var ANs : Integer;
 var fxu :  Tfxupd) : Integer; stdcall;
begin
  ANs := 3;
  fxu := f_special;
  LibVerCAR := 1
end;

procedure InitCAR(var ANs,ANx,ANsr : Integer); stdcall;
begin
  ANs := 3;
  ANx := 9;
  ANsr := 6;
end;

procedure SetNeib(N : integer; var DX,DY : Integer); stdcall;
begin
   DX := N mod 3 - 1;
   DY := N div 3 - 1;
 end;

function GetNs2(C1 : NCell) : Integer; stdcall;
begin
  GetNs2 := 2;
end;

procedure CalcCells(var NewCell : XCell; var Cells : TLocCells); stdcall;
var
  sumc,sumd,i : integer;
begin
  sumc := 0; sumd := 0;
  for i := 0 to 8 do
   if i <> 4 then
    if odd(i) then
     sumc := sumc + Cells[i]
    else
     sumd := sumd + Cells[i];
  if 2*Cells[4] + sumc + 3*sumd = 7 then NewCell := 1
  else NewCell := 0
end;


procedure UpdCell(var C1,C2 : NCell; back : Boolean); stdcall;
begin
 if C2 = 0 then
  if C1 > 0 then
  begin
   C1 := C1 - 1; C2 := 1 - C2
  end else {nothing}
 else
  if C1 < 2 then
  begin
   C1 := C1 + 1; C2 := 1 - C2
  end
end;

procedure ApplXC(var C2 : NCell; C1 : NCell;
                         XC : XCell; back : Boolean); stdcall;

begin
  C2 := (XC + C2) mod 2
end;

exports LibVerCAR, InitCAR, SetNeib, GetNs2, CalcCells, UpdCell, ApplXC;
begin
end.

Last edited by alexv on May 13th, 2014, 2:18 am, edited 1 time in total.

Post Reply