Page 1 of 1

Interactive and GPU-accelerated online CA playground

Posted: July 4th, 2020, 10:20 am
by martin.novy
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 )

Re: Interactive and GPU-accelerated online CA playground

Posted: July 4th, 2020, 10:31 am
by dvgrn
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?

Re: Interactive and GPU-accelerated online CA playground

Posted: July 5th, 2020, 11:20 pm
by Slackermanz
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.

Re: Interactive and GPU-accelerated online CA playground

Posted: July 10th, 2020, 5:52 pm
by dvgrn
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 156 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)