The goal of the Untangler project is to develop software that assists in the solution of mechanical disentanglement puzzles, consisting of rigid parts (like rings, wireframes, etc.), hinges, ropes, chains, etc. The objective of such puzzles is to separate two or more parts.
This project is still in the exploration phase. Here are some issues to be discussed:
- Software requirements (target audience: puzzle solvers/designers; for stand-alone personal use; desired functionality/features)
- How to describe disentanglement puzzles: what elements are involved (giving them names; what types of elements to distinguish), how they connect, what constraints apply, what is the initial state and the objective (final state) of the puzzle; at first, avoid continuous aspects (ring diameter), but express in discrete terms (ring is big enough to fit around the ball)
- How to explore/construct (possibly interactively) the state space; strategies (incl. backtracking, working backwards, first solving a relaxation of the puzzle)
- How to describe states, and paths in the state space: on the one hand, there are continuous moves, and on the other hand, there are discrete steps (ditinguishable regions in the state space)
- List of puzzles that could serve as case studies
- Classifaction of types of disentanglement puzzles; maybe there are categories of puzzles that are easier to deal with
- Find relevant literature.
- Find existing software components that could be useful (e.g. for 3D visualization, construction of solid models and their manipulation; knot/topology software, such as KnotPlot, but also recombination software in bioinformatics, such as TangleSolve).
- At some point, we need to pick a programming language.