hkoenig wrote:General questions--
Is the goal an encoding that is machine readable, human readable, both or neither?
My goal is a machine-readable encoding.
hkoenig wrote:Are you trying to encode existing, known constructions, or generate and survey them automatically? And if automatically, is it exhaustive enumeration, or randomly like Catalogue?
My goal is to reduce the amount of code needed to encode larger constructions like the Demonoid
hkoenig wrote:Specific to this encoding--
What about cases where there are objects that are not Gliders? Or where there are multiple target objects or pseudo-objects or intermediate steps? Or when a Spaceship (any variety) is involved?
If the objects can be constructed with gliders, then there exists an encoding to get said objects into position before the other gliders reach their intended starting positions.
hkoenig wrote:Why two axes? Doesn't that imply that there can be multiple IDs for any particular construction? Or IDs that aren't valid? What's the procedure for choosing the proper axis?
Good point. From here on out, I will treat both uppercase and lowercase as determining offset based on direction
- A,a: -1*(x offset)
B,b: -1*(y offset)
C,c: x offset
D,d: y offset
Additionally, I will now treat A,B,C, and D as gliders facing down-right, down-left, up-left, and up-right, respectively.
hkoenig wrote:Can you insure the first integer is always positive? Does a negative imply an improper coding? Is there a way to transform into a proper one?
Another good point. I will now include negative integers as well.
hkoenig wrote:Does the orientation matter? Is there a canonical form? For example, what if I turn that Fumarole construction 90deg? Will I get the same encoding?
With the above changes in place, rotating any construction 90 degrees clockwise will change the letter using the following mapping:
- A maps to B
B maps to C
C maps to D
D maps to A
A counterclockwise rotation is equivalent to using this mapping three times.
hkoenig wrote:Why upper vs. lower case? (Easy to typo by missing the shift key.) Why not A-D vs W-Z? (Why not actual compass directions, other than two characters instead of one?)
This issue is solved with the above changes.
You might also want to make several (close to a dozen) actual images demonstrating simple collisions including the reference points and minor differences. And if necessary, why a particular encoding would be preferred when there's multiples, or when invalid.
You might want to write some code that will automatically generate your encoding from an input RLE string or list of objects. Or take the code and create the equivalent bitpattern/RLE. That's one way to understand if what you are doing is what you want. If you can't code it up, it's probably too complicated or there's something else wrong. (And create a set of test cases used for validation.)
I plan on doing this when I have more time to make a script.