Interactive and GPU-accelerated online CA playground

For scripts to aid with computation or simulation in cellular automata.
Post Reply
User avatar
martin.novy
Posts: 142
Joined: October 22nd, 2014, 6:22 am
Location: Czechia, EU
Contact:

Interactive and GPU-accelerated online CA playground

Post by martin.novy » July 4th, 2020, 10:20 am

https://www.reddit.com/r/cellular_autom ... online_ca/

you can also change or write your own rules in GLSL
( a related website: https://www.shadertoy.com/results?query ... r+automata )

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

Re: Interactive and GPU-accelerated online CA playground

Post by dvgrn » July 4th, 2020, 10:31 am

martin.novy wrote:
July 4th, 2020, 10:20 am
https://www.reddit.com/r/cellular_autom ... online_ca/

you can also change or write your own rules in GLSL
( a related website: https://www.shadertoy.com/results?query ... r+automata )
Slackermanz' post with video showcasing an MNCA (Multiple Neighborhood CA) is quite an eye-opener. Looks like a combination of Larger-than-Life bugs, "orbs", with a self-stabilizing background pattern that nonetheless preserves some "track" patterns where the orbs have passed.

Can anyone do enough detective work to retrieve the specific rule that's on display in the video?

User avatar
Slackermanz
Posts: 17
Joined: July 5th, 2020, 11:17 pm

Re: Interactive and GPU-accelerated online CA playground

Post by Slackermanz » July 5th, 2020, 11:20 pm

Can anyone do enough detective work to retrieve the specific rule that's on display in the video?
I think that could be arranged ... :)

How quickly do you want it? I'm working on a Vulkan-based render engine, and once I've got a few more features in, I should be ready to write a translation script for my old GLSL Fragment shaders to VulkanAutomata SPIR-V compatible shaders.

It'll make it much easier to find the exact rule, as well as several hundred other MNCAs.

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

Re: Interactive and GPU-accelerated online CA playground

Post by dvgrn » July 10th, 2020, 5:52 pm

Here are the results of an hour's worth of Python scripting, applied to the 450 fragment shaders (which seems like they should be called "shader fragments", but I really don't know anything about this stuff).

Code: Select all

000000.frag: nhds=6, sums=1, conds=7
000001.frag: nhds=15, sums=6, conds=11
000002.frag: nhds=1, sums=1, conds=15
000003.frag: nhds=5, sums=2, conds=9
000004.frag: nhds=5, sums=2, conds=10
000005.frag: nhds=13, sums=4, conds=8
000006.frag: nhds=6, sums=2, conds=5
000007.frag: nhds=5, sums=2, conds=6
000008.frag: nhds=3, sums=1, conds=5
000009.frag: nhds=7, sums=4, conds=6
000010.frag: nhds=6, sums=1, conds=5
000011.frag: nhds=15, sums=6, conds=11
000012.frag: nhds=11, sums=3, conds=9
000013.frag: nhds=2, sums=2, conds=8
000014.frag: nhds=1, sums=1, conds=3
000015.frag: nhds=11, sums=3, conds=6
000016.frag: nhds=13, sums=4, conds=8
000017.frag: nhds=11, sums=3, conds=8
000018.frag: nhds=13, sums=4, conds=10
000019.frag: nhds=6, sums=1, conds=8
000020.frag: nhds=1, sums=1, conds=1
000021.frag: nhds=6, sums=3, conds=9
000022.frag: nhds=3, sums=3, conds=4
000023.frag: nhds=8, sums=2, conds=10
000024.frag: nhds=11, sums=3, conds=8
000025.frag: nhds=1, sums=1, conds=3
000026.frag: nhds=11, sums=3, conds=4
000027.frag: nhds=11, sums=3, conds=7
000028.frag: nhds=13, sums=4, conds=12
000029.frag: nhds=13, sums=4, conds=10
000030.frag: nhds=3, sums=1, conds=5
000031.frag: nhds=2, sums=1, conds=3
000032.frag: nhds=8, sums=2, conds=8
000033.frag: nhds=1, sums=1, conds=5
000034.frag: nhds=1, sums=1, conds=1
000035.frag: nhds=5, sums=2, conds=9
000036.frag: nhds=4, sums=1, conds=5
000037.frag: nhds=11, sums=3, conds=5
000038.frag: nhds=13, sums=4, conds=10
000039.frag: nhds=13, sums=4, conds=4
000040.frag: nhds=5, sums=2, conds=10
000041.frag: nhds=3, sums=3, conds=4
000042.frag: nhds=13, sums=4, conds=7
000043.frag: nhds=2, sums=2, conds=4
000044.frag: nhds=1, sums=1, conds=5
000045.frag: nhds=6, sums=2, conds=6
000046.frag: nhds=4, sums=1, conds=6
000047.frag: nhds=3, sums=3, conds=6
000048.frag: nhds=8, sums=2, conds=9
000049.frag: nhds=6, sums=1, conds=5
000050.frag: nhds=1, sums=0, conds=3
000051.frag: nhds=13, sums=4, conds=7
000052.frag: nhds=1, sums=1, conds=7
000053.frag: nhds=13, sums=4, conds=10
000054.frag: nhds=5, sums=2, conds=9
000055.frag: nhds=11, sums=3, conds=6
000056.frag: nhds=3, sums=1, conds=5
000057.frag: nhds=13, sums=4, conds=10
000058.frag: nhds=4, sums=1, conds=4
000059.frag: nhds=27, sums=3, conds=8
000060.frag: nhds=2, sums=1, conds=9
000061.frag: nhds=5, sums=2, conds=4
000062.frag: nhds=7, sums=4, conds=5
000063.frag: nhds=8, sums=2, conds=8
000064.frag: nhds=11, sums=3, conds=9
000065.frag: nhds=13, sums=4, conds=9
000066.frag: nhds=2, sums=2, conds=3
000067.frag: nhds=5, sums=2, conds=8
000068.frag: nhds=1, sums=0, conds=5
000069.frag: nhds=11, sums=4, conds=5
000070.frag: nhds=7, sums=4, conds=3
000071.frag: nhds=5, sums=2, conds=8
000072.frag: nhds=5, sums=2, conds=6
000073.frag: nhds=6, sums=1, conds=6
000074.frag: nhds=5, sums=2, conds=10
000075.frag: nhds=1, sums=0, conds=3
000076.frag: nhds=1, sums=0, conds=5
000077.frag: nhds=11, sums=3, conds=10
000078.frag: nhds=13, sums=4, conds=8
000079.frag: nhds=7, sums=4, conds=4
000080.frag: nhds=7, sums=4, conds=12
000081.frag: nhds=3, sums=3, conds=11
000082.frag: nhds=6, sums=3, conds=8
000083.frag: nhds=11, sums=3, conds=3
000084.frag: nhds=5, sums=2, conds=13
000085.frag: nhds=6, sums=1, conds=4
000086.frag: nhds=1, sums=1, conds=1
000087.frag: nhds=11, sums=3, conds=6
000088.frag: nhds=1, sums=1, conds=4
000089.frag: nhds=1, sums=1, conds=2
000090.frag: nhds=5, sums=2, conds=12
000091.frag: nhds=1, sums=1, conds=4
000092.frag: nhds=8, sums=2, conds=8
000093.frag: nhds=11, sums=3, conds=7
000094.frag: nhds=2, sums=2, conds=5
000095.frag: nhds=11, sums=3, conds=7
000096.frag: nhds=8, sums=2, conds=7
000097.frag: nhds=13, sums=4, conds=6
000098.frag: nhds=1, sums=1, conds=4
000099.frag: nhds=11, sums=4, conds=5
000100.frag: nhds=7, sums=4, conds=6
000101.frag: nhds=5, sums=2, conds=8
000102.frag: nhds=7, sums=4, conds=3
000103.frag: nhds=1, sums=1, conds=5
000104.frag: nhds=4, sums=1, conds=7
000105.frag: nhds=11, sums=3, conds=5
000106.frag: nhds=5, sums=2, conds=12
000107.frag: nhds=7, sums=4, conds=12
000108.frag: nhds=3, sums=1, conds=3
000109.frag: nhds=8, sums=2, conds=8
000110.frag: nhds=1, sums=1, conds=7
000111.frag: nhds=1, sums=1, conds=3
000112.frag: nhds=5, sums=2, conds=15
000113.frag: nhds=13, sums=4, conds=7
000114.frag: nhds=11, sums=3, conds=6
000115.frag: nhds=7, sums=4, conds=3
000116.frag: nhds=13, sums=4, conds=10
000117.frag: nhds=13, sums=4, conds=9
000118.frag: nhds=1, sums=1, conds=2
000119.frag: nhds=4, sums=1, conds=4
000120.frag: nhds=3, sums=3, conds=4
000121.frag: nhds=5, sums=2, conds=12
000122.frag: nhds=13, sums=4, conds=5
000123.frag: nhds=5, sums=2, conds=11
000124.frag: nhds=13, sums=1, conds=11
000125.frag: nhds=11, sums=4, conds=6
000126.frag: nhds=1, sums=1, conds=7
000127.frag: nhds=1, sums=1, conds=2
000128.frag: nhds=7, sums=4, conds=4
000129.frag: nhds=5, sums=2, conds=10
000130.frag: nhds=2, sums=2, conds=9
000131.frag: nhds=3, sums=2, conds=11
000132.frag: nhds=8, sums=2, conds=8
000133.frag: nhds=11, sums=3, conds=8
000134.frag: nhds=5, sums=2, conds=6
000135.frag: nhds=6, sums=1, conds=3
000136.frag: nhds=11, sums=3, conds=8
000137.frag: nhds=2, sums=1, conds=3
000138.frag: nhds=2, sums=1, conds=8
000139.frag: nhds=4, sums=1, conds=4
000140.frag: nhds=13, sums=4, conds=10
000141.frag: nhds=6, sums=1, conds=5
000142.frag: nhds=3, sums=3, conds=4
000143.frag: nhds=2, sums=2, conds=4
000144.frag: nhds=5, sums=2, conds=13
000145.frag: nhds=5, sums=2, conds=9
000146.frag: nhds=5, sums=3, conds=3
000147.frag: nhds=5, sums=2, conds=5
000148.frag: nhds=3, sums=2, conds=4
000149.frag: nhds=7, sums=1, conds=3
000150.frag: nhds=8, sums=2, conds=7
000151.frag: nhds=4, sums=1, conds=8
000152.frag: nhds=5, sums=2, conds=12
000153.frag: nhds=4, sums=1, conds=4
000154.frag: nhds=11, sums=4, conds=6
000155.frag: nhds=11, sums=3, conds=4
000156.frag: nhds=1, sums=1, conds=1
000157.frag: nhds=5, sums=2, conds=4
000158.frag: nhds=5, sums=2, conds=12
000159.frag: nhds=27, sums=3, conds=9
000160.frag: nhds=5, sums=2, conds=2
000161.frag: nhds=11, sums=3, conds=6
000162.frag: nhds=4, sums=1, conds=3
000163.frag: nhds=13, sums=4, conds=9
000164.frag: nhds=5, sums=2, conds=7
000165.frag: nhds=5, sums=2, conds=6
000166.frag: nhds=5, sums=2, conds=4
000167.frag: nhds=2, sums=0, conds=5
000168.frag: nhds=15, sums=6, conds=12
000169.frag: nhds=4, sums=1, conds=4
000170.frag: nhds=7, sums=4, conds=7
000171.frag: nhds=11, sums=3, conds=5
000172.frag: nhds=5, sums=2, conds=10
000173.frag: nhds=2, sums=2, conds=2
000174.frag: nhds=5, sums=2, conds=5
000175.frag: nhds=7, sums=2, conds=7
000176.frag: nhds=4, sums=1, conds=6
000177.frag: nhds=1, sums=1, conds=1
000178.frag: nhds=2, sums=2, conds=9
000179.frag: nhds=11, sums=3, conds=8
000180.frag: nhds=13, sums=4, conds=9
000181.frag: nhds=15, sums=6, conds=12
000182.frag: nhds=4, sums=1, conds=5
000183.frag: nhds=1, sums=1, conds=3
000184.frag: nhds=5, sums=5, conds=5
000185.frag: nhds=1, sums=1, conds=2
000186.frag: nhds=8, sums=2, conds=10
000187.frag: nhds=2, sums=2, conds=8
000188.frag: nhds=1, sums=1, conds=2
000189.frag: nhds=6, sums=1, conds=5
000190.frag: nhds=13, sums=4, conds=12
000191.frag: nhds=6, sums=1, conds=6
000192.frag: nhds=6, sums=1, conds=3
000193.frag: nhds=2, sums=2, conds=9
000194.frag: nhds=11, sums=3, conds=6
000195.frag: nhds=27, sums=3, conds=7
000196.frag: nhds=5, sums=2, conds=7
000197.frag: nhds=2, sums=2, conds=9
000198.frag: nhds=2, sums=2, conds=6
000199.frag: nhds=5, sums=2, conds=7
000200.frag: nhds=5, sums=2, conds=11
000201.frag: nhds=11, sums=3, conds=6
000202.frag: nhds=13, sums=4, conds=8
000203.frag: nhds=1, sums=0, conds=3
000204.frag: nhds=8, sums=2, conds=7
000205.frag: nhds=4, sums=2, conds=7
000206.frag: nhds=11, sums=3, conds=6
000207.frag: nhds=1, sums=0, conds=6
000208.frag: nhds=11, sums=3, conds=5
000209.frag: nhds=5, sums=2, conds=11
000210.frag: nhds=2, sums=2, conds=3
000211.frag: nhds=11, sums=3, conds=8
000212.frag: nhds=5, sums=2, conds=5
000213.frag: nhds=11, sums=3, conds=8
000214.frag: nhds=8, sums=2, conds=4
000215.frag: nhds=5, sums=2, conds=8
000216.frag: nhds=6, sums=1, conds=4
000217.frag: nhds=3, sums=1, conds=6
000218.frag: nhds=2, sums=2, conds=4
000219.frag: nhds=13, sums=4, conds=11
000220.frag: nhds=10, sums=2, conds=5
000221.frag: nhds=1, sums=1, conds=1
000222.frag: nhds=5, sums=2, conds=6
000223.frag: nhds=1, sums=1, conds=2
000224.frag: nhds=4, sums=1, conds=5
000225.frag: nhds=1, sums=1, conds=5
000226.frag: nhds=11, sums=3, conds=8
000227.frag: nhds=6, sums=3, conds=6
000228.frag: nhds=6, sums=2, conds=6
000229.frag: nhds=7, sums=1, conds=4
000230.frag: nhds=7, sums=5, conds=8
000231.frag: nhds=2, sums=1, conds=3
000232.frag: nhds=5, sums=2, conds=7
000233.frag: nhds=13, sums=4, conds=11
000234.frag: nhds=11, sums=3, conds=7
000235.frag: nhds=13, sums=4, conds=6
000236.frag: nhds=5, sums=2, conds=10
000237.frag: nhds=6, sums=1, conds=5
000238.frag: nhds=15, sums=6, conds=11
000239.frag: nhds=1, sums=1, conds=2
000240.frag: nhds=13, sums=4, conds=10
000241.frag: nhds=4, sums=1, conds=4
000242.frag: nhds=2, sums=2, conds=8
000243.frag: nhds=11, sums=3, conds=7
000244.frag: nhds=7, sums=4, conds=15
000245.frag: nhds=1, sums=1, conds=2
000246.frag: nhds=5, sums=2, conds=4
000247.frag: nhds=11, sums=3, conds=7
000248.frag: nhds=8, sums=2, conds=2
000249.frag: nhds=3, sums=3, conds=10
000250.frag: nhds=4, sums=1, conds=5
000251.frag: nhds=7, sums=1, conds=4
000252.frag: nhds=1, sums=1, conds=6
000253.frag: nhds=1, sums=1, conds=3
000254.frag: nhds=5, sums=2, conds=10
000255.frag: nhds=5, sums=2, conds=13
000256.frag: nhds=2, sums=1, conds=3
000257.frag: nhds=1, sums=1, conds=7
000258.frag: nhds=4, sums=1, conds=4
000259.frag: nhds=3, sums=3, conds=8
000260.frag: nhds=5, sums=2, conds=9
000261.frag: nhds=6, sums=3, conds=9
000262.frag: nhds=11, sums=3, conds=6
000263.frag: nhds=13, sums=4, conds=9
000264.frag: nhds=6, sums=1, conds=3
000265.frag: nhds=3, sums=3, conds=8
000266.frag: nhds=3, sums=1, conds=3
000267.frag: nhds=11, sums=3, conds=8
000268.frag: nhds=6, sums=3, conds=11
000269.frag: nhds=5, sums=2, conds=5
000270.frag: nhds=1, sums=1, conds=3
000271.frag: nhds=27, sums=3, conds=10
000272.frag: nhds=6, sums=1, conds=6
000273.frag: nhds=3, sums=2, conds=9
000274.frag: nhds=11, sums=3, conds=7
000275.frag: nhds=8, sums=2, conds=6
000276.frag: nhds=3, sums=1, conds=3
000277.frag: nhds=1, sums=1, conds=2
000278.frag: nhds=5, sums=2, conds=7
000279.frag: nhds=5, sums=2, conds=5
000280.frag: nhds=5, sums=2, conds=6
000281.frag: nhds=2, sums=2, conds=3
000282.frag: nhds=5, sums=2, conds=6
000283.frag: nhds=2, sums=1, conds=3
000284.frag: nhds=1, sums=1, conds=2
000285.frag: nhds=6, sums=1, conds=4
000286.frag: nhds=4, sums=2, conds=7
000287.frag: nhds=13, sums=4, conds=5
000288.frag: nhds=5, sums=2, conds=11
000289.frag: nhds=5, sums=2, conds=13
000290.frag: nhds=4, sums=1, conds=4
000291.frag: nhds=6, sums=2, conds=9
000292.frag: nhds=13, sums=4, conds=8
000293.frag: nhds=13, sums=5, conds=9
000294.frag: nhds=7, sums=4, conds=4
000295.frag: nhds=6, sums=1, conds=5
000296.frag: nhds=8, sums=2, conds=5
000297.frag: nhds=6, sums=1, conds=4
000298.frag: nhds=3, sums=3, conds=10
000299.frag: nhds=13, sums=4, conds=8
000300.frag: nhds=7, sums=2, conds=5
000301.frag: nhds=3, sums=3, conds=6
000302.frag: nhds=1, sums=1, conds=1
000303.frag: nhds=6, sums=3, conds=7
000304.frag: nhds=11, sums=3, conds=9
000305.frag: nhds=15, sums=6, conds=11
000306.frag: nhds=8, sums=2, conds=11
000307.frag: nhds=5, sums=3, conds=6
000308.frag: nhds=4, sums=1, conds=5
000309.frag: nhds=11, sums=3, conds=6
000310.frag: nhds=15, sums=6, conds=8
000311.frag: nhds=5, sums=2, conds=5
000312.frag: nhds=2, sums=2, conds=5
000313.frag: nhds=15, sums=6, conds=11
000314.frag: nhds=11, sums=3, conds=6
000315.frag: nhds=3, sums=1, conds=6
000316.frag: nhds=6, sums=1, conds=4
000317.frag: nhds=13, sums=4, conds=9
000318.frag: nhds=13, sums=4, conds=11
000319.frag: nhds=5, sums=2, conds=5
000320.frag: nhds=4, sums=1, conds=8
000321.frag: nhds=3, sums=3, conds=10
000322.frag: nhds=6, sums=2, conds=8
000323.frag: nhds=11, sums=3, conds=8
000324.frag: nhds=5, sums=2, conds=10
000325.frag: nhds=6, sums=2, conds=5
000326.frag: nhds=6, sums=1, conds=3
000327.frag: nhds=6, sums=1, conds=8
000328.frag: nhds=3, sums=3, conds=12
000329.frag: nhds=5, sums=2, conds=7
000330.frag: nhds=1, sums=1, conds=1
000331.frag: nhds=13, sums=4, conds=6
000332.frag: nhds=7, sums=4, conds=7
000333.frag: nhds=2, sums=2, conds=9
000334.frag: nhds=4, sums=2, conds=6
000335.frag: nhds=7, sums=5, conds=9
000336.frag: nhds=13, sums=4, conds=7
000337.frag: nhds=1, sums=1, conds=4
000338.frag: nhds=5, sums=2, conds=10
000339.frag: nhds=8, sums=2, conds=5
000340.frag: nhds=6, sums=1, conds=6
000341.frag: nhds=7, sums=1, conds=3
000342.frag: nhds=13, sums=4, conds=7
000343.frag: nhds=13, sums=4, conds=11
000344.frag: nhds=4, sums=1, conds=6
000345.frag: nhds=5, sums=2, conds=9
000346.frag: nhds=15, sums=6, conds=12
000347.frag: nhds=1, sums=1, conds=4
000348.frag: nhds=4, sums=1, conds=7
000349.frag: nhds=13, sums=4, conds=10
000350.frag: nhds=5, sums=2, conds=8
000351.frag: nhds=7, sums=4, conds=6
000352.frag: nhds=5, sums=2, conds=5
000353.frag: nhds=5, sums=3, conds=3
000354.frag: nhds=8, sums=2, conds=6
000355.frag: nhds=13, sums=4, conds=12
000356.frag: nhds=1, sums=0, conds=7
000357.frag: nhds=7, sums=2, conds=4
000358.frag: nhds=8, sums=2, conds=4
000359.frag: nhds=8, sums=2, conds=7
000360.frag: nhds=6, sums=1, conds=5
000361.frag: nhds=8, sums=2, conds=11
000362.frag: nhds=13, sums=4, conds=11
000363.frag: nhds=8, sums=2, conds=6
000364.frag: nhds=6, sums=2, conds=5
000365.frag: nhds=13, sums=5, conds=9
000366.frag: nhds=5, sums=2, conds=9
000367.frag: nhds=13, sums=4, conds=9
000368.frag: nhds=27, sums=3, conds=8
000369.frag: nhds=5, sums=2, conds=10
000370.frag: nhds=6, sums=1, conds=4
000371.frag: nhds=4, sums=1, conds=6
000372.frag: nhds=8, sums=2, conds=8
000373.frag: nhds=8, sums=2, conds=7
000374.frag: nhds=4, sums=1, conds=4
000375.frag: nhds=6, sums=1, conds=6
000376.frag: nhds=13, sums=4, conds=11
000377.frag: nhds=4, sums=1, conds=6
000378.frag: nhds=7, sums=4, conds=5
000379.frag: nhds=15, sums=6, conds=12
000380.frag: nhds=4, sums=1, conds=4
000381.frag: nhds=5, sums=2, conds=10
000382.frag: nhds=5, sums=5, conds=6
000383.frag: nhds=1, sums=1, conds=3
000384.frag: nhds=13, sums=4, conds=6
000385.frag: nhds=6, sums=2, conds=4
000386.frag: nhds=3, sums=3, conds=8
000387.frag: nhds=11, sums=3, conds=5
000388.frag: nhds=1, sums=1, conds=3
000389.frag: nhds=11, sums=3, conds=11
000390.frag: nhds=13, sums=4, conds=12
000391.frag: nhds=11, sums=3, conds=9
000392.frag: nhds=8, sums=2, conds=7
000393.frag: nhds=1, sums=1, conds=3
000394.frag: nhds=8, sums=2, conds=4
000395.frag: nhds=13, sums=4, conds=9
000396.frag: nhds=6, sums=1, conds=4
000397.frag: nhds=11, sums=3, conds=10
000398.frag: nhds=5, sums=2, conds=10
000399.frag: nhds=2, sums=2, conds=9
000400.frag: nhds=7, sums=1, conds=4
000401.frag: nhds=13, sums=4, conds=11
000402.frag: nhds=2, sums=2, conds=9
000403.frag: nhds=6, sums=1, conds=6
000404.frag: nhds=7, sums=1, conds=3
000405.frag: nhds=11, sums=3, conds=6
000406.frag: nhds=11, sums=3, conds=7
000407.frag: nhds=3, sums=1, conds=6
000408.frag: nhds=7, sums=4, conds=3
000409.frag: nhds=3, sums=3, conds=5
000410.frag: nhds=5, sums=2, conds=5
000411.frag: nhds=5, sums=2, conds=6
000412.frag: nhds=13, sums=4, conds=12
000413.frag: nhds=11, sums=3, conds=10
000414.frag: nhds=15, sums=6, conds=13
000415.frag: nhds=7, sums=1, conds=4
000416.frag: nhds=6, sums=2, conds=5
000417.frag: nhds=6, sums=2, conds=6
000418.frag: nhds=5, sums=3, conds=4
000419.frag: nhds=13, sums=4, conds=9
000420.frag: nhds=11, sums=3, conds=6
000421.frag: nhds=6, sums=4, conds=8
000422.frag: nhds=4, sums=2, conds=5
000423.frag: nhds=13, sums=4, conds=7
000424.frag: nhds=1, sums=1, conds=2
000425.frag: nhds=3, sums=3, conds=8
000426.frag: nhds=5, sums=2, conds=12
000427.frag: nhds=13, sums=4, conds=10
000428.frag: nhds=6, sums=2, conds=4
000429.frag: nhds=1, sums=1, conds=2
000430.frag: nhds=3, sums=3, conds=10
000431.frag: nhds=11, sums=3, conds=8
000432.frag: nhds=13, sums=4, conds=9
000433.frag: nhds=1, sums=1, conds=1
000434.frag: nhds=13, sums=4, conds=11
000435.frag: nhds=4, sums=1, conds=9
000436.frag: nhds=6, sums=1, conds=6
000437.frag: nhds=6, sums=2, conds=9
000438.frag: nhds=3, sums=3, conds=14
000439.frag: nhds=4, sums=1, conds=6
000440.frag: nhds=5, sums=2, conds=10
000441.frag: nhds=2, sums=2, conds=9
000442.frag: nhds=11, sums=3, conds=7
000443.frag: nhds=6, sums=3, conds=7
000444.frag: nhds=3, sums=3, conds=10
000445.frag: nhds=8, sums=2, conds=7
000446.frag: nhds=1, sums=1, conds=7
000447.frag: nhds=13, sums=4, conds=9
000448.frag: nhds=11, sums=4, conds=7
000449.frag: nhds=13, sums=4, conds=3
Here are the 450 fragments, plus a folder called "out" containing a reduced version of each. All neighborhood definitions are sorted to the top, and sums and conditionals are interleaved at the bottom.
reduced-and-original-fragments.zip
reduced fragments are in "out" subfolder
(925.48 KiB) Downloaded 142 times
It would usually be possible to sort the sums to the middle and the conditionals to the bottom, and in fact that's the way I did it at first. But (as Slackermanz warned me) occasionally there's a redefinition of a fin_{N} variable, usually (always?) fin_1, so in those cases the sorted logic wouldn't work the same as the unsorted version.

If some information has gotten lost somewhere along the way, which wouldn't be too surprising, then it's probably easy to edit the script and re-run the conversion. I did it as a Golly script, just because I do all Python coding as a Golly script these days, pretty much:

Code: Select all

import golly as g
import os

# will need a folder named "out" inside the folder specified by the path below
path = "YOUR/PATH/HERE/FormattedGLSL-Final/"
files = os.listdir(path)

s = ""
count = 0
condinprogress = False
for fname in files:
  if fname != "out":
    with open(path + fname, "r") as f:
      all = f.readlines()
      nhds = ""
      sums = ""
      conds = ""
      code = ""
      for line in all:
        trimmed = line.strip()
        if trimmed.startswith("float nhd"):
          nhd = trimmed[6:].replace("cv(","").replace(".0,",",").replace(".0)","").replace("+",";")
          if nhd.endswith(";"): nhd = nhd[:-1]
          nhds = nhds + nhd + "\n"
        elif trimmed.startswith("float fin"):
          fin = trimmed[6:].replace(";","")
          sums += fin + "\n"
          code += fin + "\n"
        elif trimmed.startswith("if(fin") or trimmed.startswith("if (fin"):
          cond = trimmed.replace(".0","")
          if not cond.endswith("}"):
            condinprogress = True
        elif condinprogress == True:
          cond += trimmed.replace(".0","")
          if cond.endswith("}"):
            condinprogress =  False
            conditional = cond.replace("if(fin","if (fin").replace("&&", " and ").replace("{",": ").replace("outval","out").replace(";}","") + "\n"
            conds += conditional
            code += conditional
      with open (path + "out/reduced-" + fname,"w") as f:
        f.write(nhds + code)
      s += fname + ": nhds=" + str(nhds.count("\n"))+", sums=" + str(sums.count("\n"))+", conds="+str(conds.count("\n"))+"\n"
      g.show(str(count))
      count +=1
g.setclipstr(s)

Post Reply