README

Line Safari - Is that a line

Kata Task

You are given a grid, which always includes exactly two end-points indicated by X.

You simply need to return true/false if you can detect a one and only one “valid” line joining those points.

A line can have the following characters :

  • - = left / right

  • | = up / down

  • + = corner

Rules for valid lines

  • The most basic kind of valid line is when the end-points are already adjacent

X
X
XX
  • The corner character (+) must be used for all corners (but only for corners).

  • It must be possible to follow the line with no ambiguity (lookahead of just one step, and never treading on the same spot twice).

  • The line may take any path between the two points.

  • Sometimes a line may be valid in one direction but not the other. Such a line is still considered valid.

  • Every line “character” found in the grid must be part of the line. If extras are found then the line is not valid.

Examples

Good lines

X---------X
X
|
|
X

   +--------+
X--+        +--+
               |
               X

   +-------------+
   |             |
X--+      X------+

   +-------+
   |      +++---+
X--+      +-+   X

Bad lines

X-----|----X
X
|
+
X
   |--------+
X---        ---+
               |
               X
   +------
   |
X--+      X
      +------+
      |      |
X-----+------+
      |
      X

Hint

Imagine yourself walking a path where you can only see your very next step. Can you know which step you must take, or not?

Source