FreeDrift

For discussion of other cellular automata.
Post Reply
pi_guy314
Posts: 88
Joined: July 21st, 2014, 9:45 pm

FreeDrift

Post by pi_guy314 » May 29th, 2016, 2:29 pm

Here's something I was working on for some time. In this rule, objects can slowly move across the board. Whenever a photon passes through the object, the object is pulled away from the photon's direction. The number of objects are also conserved in this rule.

Here's the rule:

Code: Select all

@RULE FreeDrift

May 29 2016

Objects can move freely and randomly, resembling Brownian-like motion.
Photons would pull objects away from its direction.
The number of objects are conserved in this rule.

States:
1 barrier
2 photon tail
3 photon head
4 still object
5 pulled object
@TABLE
n_states:6
neighborhood:Moore
symmetries:rotate4reflect
var a1 = {00,02,03,04,05}   #all
var r1 = {00,02}            #states that allow photon to regenerate(old)
var P1 = {00,04}            #non-photon related state

#extended
var a2 = {a1}
var a3 = {a1}
var a4 = {a1}
var a5 = {a1}
var a6 = {a1}
var a7 = {a1}
var a8 = {a1}
var r2 = {r1}
var r3 = {r1}
var r4 = {r1}
var r5 = {r1}
var r6 = {r1}
var r7 = {r1}
var r8 = {r1}
var P2 = {P1}
var P3 = {P1}
var P4 = {P1}
var P5 = {P1}
var P6 = {P1}
var P7 = {P1}
#charged pulled object (how the object will move)
04,03,P1,P2,P3,P4,P5,P6,P7,05
02,a1,a2,a3,a4,05,a5,a6,a7,05
05,02,a1,a2,a3,a4,a5,a6,a7,03
05,a1,a2,a3,a4,a5,a6,a7,a8,04
#photon generator (how new photons are created)
#02,r1,r2,r3,r4,r5,r6,r7,r8,03 (old)
02,00,00,00,00,00,00,00,00,03
#photon movement (how photons will move)
00,03,P1,P2,P3,P4,P5,P6,P7,03
03,a1,a2,a3,a4,a5,a6,a7,a8,02
02,a1,a2,a3,a4,a5,a6,a7,a8,00
@COLORS
1 250 250 000
2 000 000 000
3 025 025 025
4 250 000 000
5 225 000 000
In this variant rule, objects will stay attached to each other. Objects would not move if doing so might break a connection with the entire group.

Code: Select all

@RULE FreeDrift_bind

May 29 2016

Objects can move freely and randomly, resembling Brownian-like motion.
Photons would pull objects away from its direction except when it would sever a connection.
The number of objects are conserved in this rule.

States:
1 barrier
2 photon tail
3 photon head
4 still object
5 still charged head object
6 still charged tail object
7 pulled object
@TABLE
n_states:8
neighborhood:Moore
symmetries:rotate4reflect
var a1 = {00,02,03,04,05,06,07}     #all
var r1 = {00,02}                    #states that allow photon to regenerate (old)
var h1 = {03,05}                    #head
var P1 = {00,04}                    #not photon related state
var a2 = {a1}
var a3 = {a1}
var a4 = {a1}
var a5 = {a1}
var a6 = {a1}
var a7 = {a1}
var a8 = {a1}
var r2 = {r1}
var r3 = {r1}
var r4 = {r1}
var r5 = {r1}
var r6 = {r1}
var r7 = {r1}
var r8 = {r1}
var P2 = {P1}
var P3 = {P1}
var P4 = {P1}
var P5 = {P1}
var P6 = {P1}
var P7 = {P1}
#charged still object (when the object should not move)
04,03,P1,00,04,P2,P3,P4,P5,05
04,03,P1,00,P2,04,P3,00,P4,05
04,05,P1,P2,P3,P4,P5,P6,P7,05
05,a1,a2,a3,a4,a5,a6,a7,a8,06
06,a1,a2,a3,a4,a5,a6,a7,a8,04
#charged pulled object (when the object should move)
04,03,P1,P2,P3,P4,P5,P6,P7,07
02,a1,a2,a3,a4,07,a5,a6,a7,07
07,02,a1,a2,a3,a4,a5,a6,a7,03
07,a1,a2,a3,a4,a5,a6,a7,a8,04
#photon generator (how new photons are created)
#02,r1,r2,r3,r4,r5,r6,r7,r8,03 (old)
02,00,00,00,00,00,00,00,00,03
#photon movement (how photons will move)
00,h1,P1,P2,P3,P4,P5,P6,P7,03
03,a1,a2,a3,a4,a5,a6,a7,a8,02
02,a1,a2,a3,a4,a5,a6,a7,a8,00
@COLORS
1 250 250 000
2 000 000 000
3 025 025 025
4 250 000 000
5 225 000 000
6 200 000 000
7 175 000 000
Here's a diffusing block of objects:

Code: Select all

x = 100, y = 100, rule = FreeDrift
100A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.
A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A
98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.
A$A98.A$A98.A$A98.A$A98.A$A98.A$A39.10D49.A$A39.10D49.A$A39.10D49.A$A
39.10D49.A$A39.10D49.A$A39.10D49.A$A39.10D49.A$A39.10D49.A$A39.10D49.
A$A39.10D49.A$A98.A$A98.A$A98.A$A98.A$A98.A$A55.B42.A$A98.A$A98.A$A
98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.
A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A
98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.
A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$100A!
Here's a fun example using symmetry. It looks like a rotating square.

Code: Select all

x = 100, y = 100, rule = FreeDrift
100A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.
A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A
98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.
A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A48.B49.A$A
98.A$A48.E49.A$A98.A$A98.A$A52.D.B43.A$A43.B.E52.A$A98.A$A98.A$A49.E
48.A$A98.A$A49.B48.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$
A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A
98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.
A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A98.A$A
98.A$100A!
Edit1: Changed the rule name.
Edit2: Replaced the photon generator(reverted)

pi_guy314
Posts: 88
Joined: July 21st, 2014, 9:45 pm

Re: FreeDrift

Post by pi_guy314 » December 20th, 2016, 5:23 pm

In this test rule, certain elements can bind together forming molecules. Molecules can react with each other. Basically, molecules with compatible elements will merge. Molecules become unstable when there are 2 or more incompatible elements within that molecule. Unstable molecules will eventually decompose.

This is more of a proof of concept than an actual implementation. The problem with this implementation is that complex unstable molecules will decompose in many different ways. Because of this, there are not that many consistent chemical reactions that will occur. There may be better implementation of chemistry-like rules eventually.

Rule Table:

Code: Select all

@RULE FreeDrift_test1_RB_RG_BG

Bind rules:
red with blue
red with green
blue with green
(all elements bind with unlike elements)

States:
01 barrier
02 photon tail
03 photon head
04 red still object
05 red still charged head object
06 red still charged tail object
07 red pulled object
08 green still object
09 green still charged head object
10 green charged tail object
11 green pulled object
12 blue still object
13 blue still charged head object
14 blue charged tail object
15 blue pulled object

@TABLE
n_states:16
neighborhood:Moore
symmetries:rotate4reflect
#main
var a1 = {00,02,03,04,05,06,07,08,09,10,11,12,13,14,15} #all
var h1 = {03,05,09,13}                                  #head
var P1 = {00,04,08,12}                                  #non-photon/non-charged related

#red
var rB = {08,12}    #what it can bind with
var RB = {00,04}    #what it wont bind with plus 0
var Rb = {00,04}

#green
var gB = {04,12}
var GB = {00,08}
var Gb = {00,08}

#blue
var bB = {04,08}
var BB = {00,12}
var Bb = {00,12} 
           
#extended
var a2 = a1
var a3 = a1
var a4 = a1
var a5 = a1
var a6 = a1
var a7 = a1
var a8 = a1
var P2 = P1
var P3 = P1
var P4 = P1
var P5 = P1
var P6 = P1
var P7 = P1
#charged red still object (when the object should not move)
04,03,P1,RB,rB,P2,P3,P4,P5,05
04,03,P1,RB,P2,rB,P3,Rb,P4,05
04,05,P1,P2,P3,P4,P5,P6,P7,05
05,a1,a2,a3,a4,a5,a6,a7,a8,06
06,a1,a2,a3,a4,a5,a6,a7,a8,04
#charged red pulled object (when the object should move)
04,03,P1,P2,P3,P4,P5,P6,P7,07
02,a1,a2,a3,a4,07,a5,a6,a7,07
07,02,a1,a2,a3,a4,a5,a6,a7,03
07,a1,a2,a3,a4,a5,a6,a7,a8,04
#charged green still object (when the object should not move)
08,03,P1,GB,gB,P2,P3,P4,P5,09
08,03,P1,GB,P2,gB,P3,Gb,P4,09
08,05,P1,P2,P3,P4,P5,P6,P7,09
09,a1,a2,a3,a4,a5,a6,a7,a8,10
10,a1,a2,a3,a4,a5,a6,a7,a8,08
#charged green pulled object (when the object should move)
08,03,P1,P2,P3,P4,P5,P6,P7,11
02,a1,a2,a3,a4,11,a5,a6,a7,11
11,02,a1,a2,a3,a4,a5,a6,a7,03
11,a1,a2,a3,a4,a5,a6,a7,a8,08
#charged blue still object (when the object should not move)
12,03,P1,BB,bB,P2,P3,P4,P5,13
12,03,P1,BB,P2,bB,P3,Bb,P4,13
12,05,P1,P2,P3,P4,P5,P6,P7,13
13,a1,a2,a3,a4,a5,a6,a7,a8,14
14,a1,a2,a3,a4,a5,a6,a7,a8,12
#charged blue pulled object (when the object should move)
12,03,P1,P2,P3,P4,P5,P6,P7,15
02,a1,a2,a3,a4,15,a5,a6,a7,15
15,02,a1,a2,a3,a4,a5,a6,a7,03
15,a1,a2,a3,a4,a5,a6,a7,a8,12
#photon generator (how new photons are created)
02,00,00,00,00,00,00,00,00,03	
#photon movement (how photons will move)
00,h1,P1,P2,P3,P4,P5,P6,P7,03
03,a1,a2,a3,a4,a5,a6,a7,a8,02
02,a1,a2,a3,a4,a5,a6,a7,a8,00
@COLORS
01 250 250 250
02 000 000 000
03 025 025 025
04 250 000 000
05 225 000 000
06 200 000 000
07 175 000 000
08 000 250 000
09 000 225 000
10 000 200 000
11 000 175 000
12 000 000 250
13 000 000 225
14 000 000 200
15 000 000 175
Example Pattern:

Code: Select all

x = 42, y = 42, rule = FreeDrift_test1_RB_RG_BG
42A$A40.A$A40.A$A40.A$A40.A$A40.A$A40.A$A7.D4.L20.L6.A$A17.H5.H16.A$A
40.A$A40.A$A4.D5.L29.A$A40.A$A15.D3.D20.A$A26.D13.A$A40.A$A32.L7.A$A
6.H33.A$A17.L22.A$A40.A$A20.C2.D16.A$A28.H11.A$A10.D3.L25.A$A33.D6.A$
A40.A$A40.A$A16.L23.A$A4.L17.H17.A$A27.D12.A$A33.H6.A$A14.H25.A$A9.H
10.L19.A$A40.A$A33.H6.A$A15.D24.A$A40.A$A7.H32.A$A40.A$A26.L13.A$A40.
A$A40.A$42A!

fluffykitty
Posts: 1175
Joined: June 14th, 2014, 5:03 pm
Contact:

Re: FreeDrift

Post by fluffykitty » December 20th, 2016, 6:25 pm

This looks a lot like Squirm3. Also, 4-color version of above rule:

Code: Select all

@RULE FreeDrift_test1_RB_RG_RY_BG_BY_GY

Bind rules:
red with blue
red with green
red with yellow
blue with green
blue with yellow
green with yellow
(all elements bind with unlike elements)

States:
01 barrier
02 photon tail
03 photon head
04 red still object
05 red still charged head object
06 red still charged tail object
07 red pulled object
08 green still object
09 green still charged head object
10 green charged tail object
11 green pulled object
12 blue still object
13 blue still charged head object
14 blue charged tail object
15 blue pulled object

@TABLE
n_states:20
neighborhood:Moore
symmetries:rotate4reflect
#main
var a1 = {00,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19} #all
var h1 = {03,05,09,13,17}                                  #head
var P1 = {00,04,08,12,16}                                  #non-photon/non-charged related

#red
var rB = {08,12,16}    #what it can bind with
var RB = {00,04}    #what it wont bind with plus 0
var Rb = {00,04}

#green
var gB = {04,12,16}
var GB = {00,08}
var Gb = {00,08}

#blue
var bB = {04,08,16}
var BB = {00,12}
var Bb = {00,12} 

#yellow
var yB = {04,08,12}
var YB = {00,16}
var Yb = {00,16}
           
#extended
var a2 = a1
var a3 = a1
var a4 = a1
var a5 = a1
var a6 = a1
var a7 = a1
var a8 = a1
var P2 = P1
var P3 = P1
var P4 = P1
var P5 = P1
var P6 = P1
var P7 = P1
#charged red still object (when the object should not move)
04,03,P1,RB,rB,P2,P3,P4,P5,05
04,03,P1,RB,P2,rB,P3,Rb,P4,05
04,05,P1,P2,P3,P4,P5,P6,P7,05
05,a1,a2,a3,a4,a5,a6,a7,a8,06
06,a1,a2,a3,a4,a5,a6,a7,a8,04
#charged red pulled object (when the object should move)
04,03,P1,P2,P3,P4,P5,P6,P7,07
02,a1,a2,a3,a4,07,a5,a6,a7,07
07,02,a1,a2,a3,a4,a5,a6,a7,03
07,a1,a2,a3,a4,a5,a6,a7,a8,04
#charged green still object (when the object should not move)
08,03,P1,GB,gB,P2,P3,P4,P5,09
08,03,P1,GB,P2,gB,P3,Gb,P4,09
08,05,P1,P2,P3,P4,P5,P6,P7,09
09,a1,a2,a3,a4,a5,a6,a7,a8,10
10,a1,a2,a3,a4,a5,a6,a7,a8,08
#charged green pulled object (when the object should move)
08,03,P1,P2,P3,P4,P5,P6,P7,11
02,a1,a2,a3,a4,11,a5,a6,a7,11
11,02,a1,a2,a3,a4,a5,a6,a7,03
11,a1,a2,a3,a4,a5,a6,a7,a8,08
#charged blue still object (when the object should not move)
12,03,P1,BB,bB,P2,P3,P4,P5,13
12,03,P1,BB,P2,bB,P3,Bb,P4,13
12,05,P1,P2,P3,P4,P5,P6,P7,13
13,a1,a2,a3,a4,a5,a6,a7,a8,14
14,a1,a2,a3,a4,a5,a6,a7,a8,12
#charged blue pulled object (when the object should move)
12,03,P1,P2,P3,P4,P5,P6,P7,15
02,a1,a2,a3,a4,15,a5,a6,a7,15
15,02,a1,a2,a3,a4,a5,a6,a7,03
15,a1,a2,a3,a4,a5,a6,a7,a8,12
#charged yellow still object (when the object should not move)
16,03,P1,YB,yB,P2,P3,P4,P5,17
16,03,P1,YB,P2,yB,P3,Yb,P4,17
16,05,P1,P2,P3,P4,P5,P6,P7,17
17,a1,a2,a3,a4,a5,a6,a7,a8,18
18,a1,a2,a3,a4,a5,a6,a7,a8,16
#charged yellow pulled object (when the object should move)
16,03,P1,P2,P3,P4,P5,P6,P7,19
02,a1,a2,a3,a4,19,a5,a6,a7,19
19,02,a1,a2,a3,a4,a5,a6,a7,03
19,a1,a2,a3,a4,a5,a6,a7,a8,16
#photon generator (how new photons are created)
02,00,00,00,00,00,00,00,00,03   
#photon movement (how photons will move)
00,h1,P1,P2,P3,P4,P5,P6,P7,03
03,a1,a2,a3,a4,a5,a6,a7,a8,02
02,a1,a2,a3,a4,a5,a6,a7,a8,00
@COLORS
01 250 250 250
02 000 000 000
03 025 025 025
04 250 000 000
05 225 000 000
06 200 000 000
07 175 000 000
08 000 250 000
09 000 225 000
10 000 200 000
11 000 175 000
12 000 000 250
13 000 000 225
14 000 000 200
15 000 000 175
16 250 250 000
17 225 225 000
18 200 200 000
19 175 175 000

User avatar
Saka
Posts: 3627
Joined: June 19th, 2015, 8:50 pm
Location: Indonesia
Contact:

Re: FreeDrift

Post by Saka » December 21st, 2016, 3:39 am

I like this rule, FreeDrift bind demonstrates a thing I call "Random Clumping", here is an example pattern, all of them clump together at around 1,270,000 gens.

Code: Select all

x = 36, y = 39, rule = FreeDrift_bind:T50,50
3.3D27.3D$3.3D27.3D$3.3D27.3D10$19.5D$18.6D$17.7D$16.8D$15.10D$13.12D
$7.B5.12D$13.12D$13.12D$13.12D$13.12D$14.10D$15.8D$16.6D7$3D$3D$3D2$
24.3D$24.3D$24.3D!

User avatar
Saka
Posts: 3627
Joined: June 19th, 2015, 8:50 pm
Location: Indonesia
Contact:

Re: FreeDrift

Post by Saka » December 24th, 2016, 1:57 am

I made some lasers

Code: Select all

x = 7, y = 43, rule = FreeDrift_bind
5.D$5.BC$3.GCA5$4.AD$5.B$4.D2$4.A2$6.D$5.DE$5.DF$4.D.D$5.D$6.C$3.A2.E
$3.G.EA$3.D.DB$6.B$6.A6$5.A$6.A$6.C$4.D.F$4.2DC$4.2D$.BC.D.D$D.AC.2D$
D.2B$6.C2$4.FE$4.EAD$5.F!

User avatar
PHPBB12345
Posts: 1096
Joined: August 5th, 2015, 11:55 pm
Contact:

Re: FreeDrift

Post by PHPBB12345 » January 10th, 2017, 7:58 am

Simple Test:

Code: Select all

x = 39, y = 20, rule = FreeDrift
D2.CB20.CB3$B21.B$C21.C3$D2.CB3.BC2.D2.CB8.CB3.BC5.CB4$B11.B9.B11.B$C
11.C9.C11.C3$D2.CB3.BC2.D2.CB8.CB3.BC5.CB3$C11.C9.C11.C$B11.B9.B11.B!

Code: Select all

x = 8, y = 5, rule = FreeDrift
.A4.A2$A2.D.B.A2$.A4.A!

Code: Select all

x = 5, y = 1, rule = FreeDrift
BCEBC!

Code: Select all

x = 44, y = 1, rule = FreeDrift
BCEBCEBCEBCEBCEBCEBCEBCEBCEBCEBCEBCEBCEBCEBC!
Laser:

Code: Select all

x = 2, y = 1, rule = FreeDrift
AC!

Code: Select all

x = 5, y = 7, rule = FreeDrift
2.A$A3$2.C$A3.A$2.A!
Wickstretcher (?):

Code: Select all

x = 3, y = 1, rule = FreeDrift
AEC!

Post Reply