If you take a non-intersecting closed loop on a torus (that is to say, a path which ends where it starts and does not cross over itself, drawn inside a square whose edges "wrap" left to right and top to bottom), you can use it to infinitely tile the plane in a lined pattern:
Example loop (w/ basepoint), and the corresponding tiling in the plane
Moreover, if we take our basepoint and follow the path produced on the plane diagram until we hit a basepoint once again, we find that we move through a series of tiles, perhaps not ending up where we started:
Extracting the arrow sequence from the loop (w/ given basepoint and travel direction)
In this way, we say that the sequence ↑←↓↓←↑→↓ is admissible. However, not all sequences of arrows can be produced this way; a diagram producing the sequence simply cannot be drawn. Those sequences are called inadmissible. Can you find an effective means for determining if a provided sequence is admissible or inadmissible?
Here are some example cases to get you started (which your algorithm should correctly label as admissible or inadmissible):
- ↓←→↓↑→←↓
- ↑↑↑→↑←
- ↑↑↓→←↑→↑→