Open lucashutyler opened 1 year ago
This was something I was playing with, I think it hits a wall while trying to compare all rotations. Generating polycubes is relatively easy, just add a new cube adjacent to an existing one, but the complexity comes from comparing it against previously seen ones.
Explanation
Consider a list of directions instead of a representation of the polycubes inside a n-dimensional array. Start with 2D for simplicity. For 2D we will just go "north (n), south (s), east (e), west (w)."
(n: e)
(n,n: e)
(n,e: n)
(n,e: s)
(n,e+n or n,n: s,e)??
Using a logic like this it feels like we could develop a set of rules for traversal. We might be able to determine that certain "turns" would simply be unallowed (overlap previous blocks, produce rotations, etc).
To elevate this to 3D, we would only have to add up and down.
(n: e)
(n,n: e)
(n,e: n)
(n,e: s)
(n,e: u)
(n,e+n or n,n: s,e)
(n,e+u or n,e: w,u)
(n,w: u or n,u: e)??
We'd have to go a few more terms to try to find more "rules" when adding on to previous sets.
While this could easily be hashed, ideally we would not have to hash anything and just have a set of rules that are followed until completion, giving us our number of shapes possible.
Immediate Concerns
Thanks!