Problem Statement
Your friend has decided to challenge you by trying to solve the maze with the monitor off. This means you do not know which position you have started in or if you have won. Return the shortest sequence of moves that will solve the maze regardless of your initial position. If there are multiple shortest solutions, return the one that occurs first lexicographically. If there is no solution, return an empty string.
Definition
- Class:
- BlindMazeSolve
- Method:
- getSolution
- Parameters:
- String[]
- Returns:
- String
- Method signature:
- String getSolution(String[] maze)
- (be sure your method is public)
Constraints
- maze contains between 1 and 5 elements, inclusive.
- Each element of maze will contain between 1 and 4 characters, inclusive.
- Each element of maze will contain the same number of characters.
- Each character in maze will be '.' or 'X'.
- maze will contain at least one '.'.
Examples
{".X"}
Returns: "L"
Left will win immediately, so we return "L".
{ "..", ".." }
Returns: "LL"
Regardless of your initial position, moving left twice will result in winning.
{ "X..", "X..", "XXX" }
Returns: ""
No way to win here.
{ "X...", "XXX.", "X...", "X.XX", "..XX" }
Returns: "RRDDLLDDLL"
{ "..XX", "X...", "XXX.", "....", "XXXX" }
Returns: "DDLLULL"
{ ".XXX", "X..X", "XX.X", "...X", "XXXX" }
Returns: "RDDLLL"
{"..","XX","..",".X",".X"}
Returns: "LL"
{"X","X",".","."}
Returns: "L"
{"XXX","..X","X..","XX.","..."}
Returns: "DDLULL"
{"."}
Returns: "L"
{"...X",".XX.","....","...X"}
Returns: "DLLLL"
{"..","..",".."}
Returns: "LL"
{".",".",".",".","."}
Returns: "L"
{"XX","..","XX",".X"}
Returns: "LL"
{".X",".X"}
Returns: "L"
{"."}
Returns: "L"
{"X.","..","XX",".X","XX"}
Returns: "DLL"
{"X",".","."}
Returns: "L"
{".XXX"}
Returns: "L"
{".X",".X","XX",".."}
Returns: "LL"
{"X...","..X.","X.XX"}
Returns: "ULLDLL"
{"..X.","....","XX.."}
Returns: "DLULLL"
{"XXX",".X.","X..","..X"}
Returns: "DLDLL"
{"XX","XX","..","XX",".X"}
Returns: "LL"
{"..",".X",".X","..","XX"}
Returns: "LL"
{"....","...X",".XXX"}
Returns: "LLLL"
{"X.X","..X","XXX","XXX"}
Returns: "DLL"
{"..","XX","..",".X",".X"}
Returns: "LL"
{"X.XX","....",".XX.","....",".XXX"}
Returns: "DDLLLL"
{"...","X..","X..","XX."}
Returns: "ULUULL"
{"X.X","..X","X..",".X.","..X"}
Returns: "DDULULL"
{"..X.","X.X.","X...","X.X.","..XX"}
Returns: "DDDULLDDLL"
{"..","X.","XX","..","XX"}
Returns: "ULL"
{".X.","XX.","...","XXX"}
Returns: "DDLLL"
{"..X","X..","..X","XXX"}
Returns: "LDLL"
{".X.","X..",".X.","..."}
Returns: "DRDDLLL"
{".XX.","XX..","....","X.X.",".XX."}
Returns: "DLUULDLLL"
{".X.","X..",".X.","X..","..X"}
Returns: "DRDDLDLL"
{".XXX","...X","XXXX"}
Returns: "LLL"
{"..","..",".X","XX","XX"}
Returns: "LL"
{".XX","..X","XXX","...","X.."}
Returns: "LULL"
{"XX","XX","..",".X",".X"}
Returns: "LL"
{"..","..","..","..","XX"}
Returns: "LL"
{"..X","XXX",".XX","..X"}
Returns: "LL"
{".X.","...","..X",".XX"}
Returns: "DLLL"
{"XX","X.","..","X.",".."}
Returns: "LDLL"
{".X.X","XX..","...."}
Returns: "DDLLLL"
{"..","X.","..","XX",".."}
Returns: "DDLL"
{"...X","...X","XXX.","....",".X.X"}
Returns: "DLULLL"
{"...X","..XX","X..X","XX.X"}
Returns: "ULULL"
{".XX."}
Returns: ""
If you happen to be in the rightmost position, you cannot win.
{ "XXX.", "..X.", "X...", "XX..", "X..." }
Returns: "DDDRULULULL"
{ "X...", "X.XX", "..XX", "....", "X..." }
Returns: "LLDDDULL"
{ "X...", "X.XX", "X...", "XXX.", "...." }
Returns: "LLDDRRDDLLLL"
{ "X...", "X.XX", "X...", "..X.", ".X.." }
Returns: "RUULLDDDLL"
{ "X...", "X.XX", "....", "XXX.", "X..." }
Returns: "RRUULLDDLL"
{ "....", ".XX.", ".XX.", ".XX.", "...." }
Returns: "DDDDLLLL"
{ "....", ".XX.", ".XX.", ".XX.", ".X.." }
Returns: "RUUUULLLL"
{ "X...", "X.X.", "X.X.", "..X.", ".X.." }
Returns: "RUUUULLDDDLL"
{"X.X.", "X.X.", "X...", "X.X.", "..X." }
Returns: "DDDDUULLDDLL"
{"....", ".XX.", "X...", ".XX.", "...." }
Returns: "RRDDDDLLLL"
{"..X.", "X.X.", "X...", "..X.", "X..." }
Returns: "DDDDLDLULL"
{"..X.", "X...", "X.X.", "XX..", "X..." }
Returns: "RRUUULDLLULL"
{"....", "....", "....", "....", "...." }
Returns: "LLLL"
{"X..", "..." }
Returns: "DLLL"
{"....", "X.X.", "....", "X.X.", "...." }
Returns: "DDDDLLLL"