Solve a reverse arrow maze This is an "arrow maze":

  v      &lt; 
&gt;     v    
      &gt;  ^ 
&gt;         v
^ &lt;       *


The * marks the spot where you will finish. Your goal is to find where the maze starts (hence, reverse maze). In this case, it's the first &gt; on the second line.

  v------&lt; 
S-+---v  | 
  |   &gt;--^ 
&gt;-+-------v
^ &lt;       *


Note that all arrows must be used. Also note that you can assume the lines will be padded with spaces to equal length.

Your program must input the maze in any reasonable way (stdin, from a file, message box, etc.), however the maze must be completely intact. For example, you can't input the lines separated by commas; the input must be exactly the maze.

You must output the start of the maze in any reasonable way. For example, you could


output the coordinates of the start
output the entire maze with the start arrow replaced with an S
output the entire maze with all arrows except the start arrow removed (whitespace intact!)
etc.


As long as you can tell by your output which arrow is the start arrow, then it's okay. For example, an output of

"0"
"2"


is alright, regardless of the newlines and quotes, because you can still tell where the start was.

This is code-golf, so the shortest code in bytes will win.
GolfScript (101 100 bytes)

n/:g,,{:&amp;g=:r,,{&amp;1$r='^v&lt;&gt;*'?70429 3base 2/=++}/}%{,4=},.{2&lt;}%:&amp;\{2/~\{[~2$~@+(@@+(\]&amp;1$?)!}do\;}%^`


Output is in the form [[x y]] where the co-ordinates are both 0-based.

Online demo

Processing is in two phases: the first phase turns the maze into an array of [x y dx dy] tuples; the second phase maps each arrow / asterisk to the arrow / asterisk it points to. (Asterisks are considered to point to themselves). By the definition of the problem, there is exactly one arrow which isn't in the result of this map, and that is the solution.