photonsrc, a zfind-like program for finding higher-period photons
Posted: August 14th, 2020, 7:18 am
I've developed an experimental zfind-like search program for photons with arbitrary period, since to the best of my knowledge, no other programs can currently do this.
The basic idea in the search is that when a cell in a photon is updated, each row moves forward 1 cell, so in effect each row depends only on the previous two rows. In other words, the problem is equivalent to a rule on the following neighborhood:
A corollary of this result is that each row eventually repeats with a period that is a multiple of the row in front of it. By exploring the de Bruijn diagram of a particular row and isolating cycles with length dividing a target period, we can search a tree of photon frontends and find a spaceship.
Improvement to-do's:
The output somewhat resembles that of qfind.
The basic idea in the search is that when a cell in a photon is updated, each row moves forward 1 cell, so in effect each row depends only on the previous two rows. In other words, the problem is equivalent to a rule on the following neighborhood:
Code: Select all
x = 3, y = 3, rule = B/S012345678History
3B$3B$BAB!
Improvement to-do's:
- Improve detection of duplicate/redundant results.
- Improve the tree search algorithm (currently standard DFS)
- Possibly add support for B0 rules that allow lightspeed spaceships
Code: Select all
python photonsrc.py [-h] -r RULE [-p PERIOD] -w WIDTH [-s SYMMETRY] [--subperiod SUBPERIOD]
Code: Select all
python photonsrc.py -r B2/S0 -w 7 -s u -p 4 --subperiod true
Rule: B2/S0
Period: 4
Width: 13
Symmetry: odd
x = 13, y = 2, rule = B2/S0
b2o7b2o$o2bo5bo2bo!
x = 11, y = 2, rule = B2/S0
b2o5b2o$o2bo3bo2bo!
x = 11, y = 4, rule = B2/S0
2b2o3b2o2$bo7bo$o2bo3bo2bo!
x = 11, y = 3, rule = B2/S0
2b2o3b2o$bo7bo$o9bo!
Search complete.