Problem Statement
Hurray! You have found a map to a hidden treasure on an island somewhere in the Carribean. It's a classic pirate treasure map, with a big X marking the spot of the treasure. It also has instructions describing how to walk to reach the X, like "north 2 paces", "east 1 pace", etc. However, the instructions lack one vital piece of information: It doesn't say where on the island you should start from! Since you suspect the treasure is buried deep and that the X on the map is only a rough estimation, you might have to dig in a lot of places before finding the treasure. So before you start to dig, you pick up your laptop computer in order to determine where on the island the treasure is most likely to be buried.
You assume that the intended start location is somewhere on the beach, and that if you follow the walking instructions, you should never have to walk across water. If several such starting positions exist, the position that will cause the treasure to be closest (Euclidean distance) to the estimated treasure position is considered most likely (see example 0). If there is a tie, select the northernmost position of these. If there is still a tie, select the westernmost position of these.
The island will be given as a
{"..OOOO..", ".OOOO...", "OOXOOOOO", "OOOOOOO.", ".OOOO...", "..OOO..."}
The island will always be connected. This means that if you stand somewhere on the island, it will be possible to reach every part of the island by only walking on land in any of the four cardinal directions. Also, there will be no lakes, which means that from any water square it will be possible to go in cardinal directions on other water squares until the edge of the map is reached.
The walking instructions will be given as a
Create a class TreasureHunt containing the method findTreasure which takes a
Definition
- Class:
- TreasureHunt
- Method:
- findTreasure
- Parameters:
- String[], String[]
- Returns:
- int[]
- Method signature:
- int[] findTreasure(String[] island, String[] instructions)
- (be sure your method is public)
Notes
- All land cells that are on the edge of the grid are considered to be a beach since they're adjacent to squares outside the grid, which are water (see example 2).
- The Euclidean distance between two points x1,y1 and x2,y2 is sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2)).
- East is the positive x-direction and North is the negative y-direction.
Constraints
- island will contain between 1 and 50 elements, inclusive.
- Each element in island will contain between 1 and 50 characters, inclusive.
- All elements in island will contain the same number of characters.
- The characters in each element in island will be '.', 'O' or 'X'.
- Exactly one character in island will be a 'X'.
- The island will be connected.
- The island will not contain any lakes.
- instructions will contain between 1 and 50 elements, inclusive.
- Each element in instructions will be in the form "
" where direction is 'N', 'S', 'E' or 'W' and paces is an integer between 1 and 9 (without leading zeros), inclusive.
Examples
{"..OOOO..", ".OOOO...", "OOXOOOOO", "OOOOOOO.", ".OOOO...", "..OOO..."}
{"W 3","S 1","E 2"}
Returns: { 3, 2 }
The treasure can't be buried where the 'X' is, because then we would have to walk on water.
{".......", ".OOOOO.", ".OOOOO.", ".OOXOO.", ".OOOOO.", ".OOOOO.", "......."}
{"N 1"}
Returns: { 3, 4 }
Notice that you must start from the beach.
{"OOOOOOOOOOO.", "OX..........", "OOOOOOOOOOO."}
{"W 2"}
Returns: { 1, 0 }
{"....OO.", "..OOXOO", "OOOO...", ".OOOOOO", "...OOOO", ".OOOOO.", "..OOO.."}
{"N 1","E 1","N 4"}
Returns: { 3, 1 }
{"X"}
{"N 1","E 1","S 1","W 1"}
Returns: { }
{".................O..", "..OO.......OOOOO.O..", "..OOO..OOO.OOOOOOOO.", "..OOOOOOOOOOOOOOOOO.", "..OOOOOOOOOOOOOOOOO.", "...OOOOOOOOOOOOOOOO.", "OO.OOOOOOOXOOOOOO...", ".OOOOOOO..OOOOOOOO..", "OOOOOOOOO..OOOOOOOO.", "OOOOOOOOO..OOOOOOO..", ".OOOOOOOOO..........", "OOOOOOOOOOOOOOOOOO..", "..OOOOOOOOOOOOOOO...", "OOOOOOOOOOOOOOOOO...", ".OOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOO..", "..OOOOOOOOOOOOOOOOO.", "OOOOO.OOOOOO..OOO...", "O..OO.OOOO.....OOO..", "O......O.OO......OO."}
{"N 2","E 3","N 4","E 2","S 1","W 2","E 9","E 2", "N 3","W 5","N 1","W 6","N 6","S 1","S 1","E 7"}
Returns: { 10, 6 }
{"OXO."}
{"W 2"}
Returns: { 0, 0 }
{".XOO"}
{"W 3"}
Returns: { }
{"X.OO","O..O","OOOO"}
{"W 1"}
Returns: { 2, 0 }
{"O.O.O.X.O.O","O.O.O.O.O.O","O.O.O.O.O.O","O.O.O.O.O.O","OOOOOOOOOOO"}
{"E 2","E 2","E 2","E 2","E 2"}
Returns: { 10, 4 }
{"OOOOOOO.OOOOOO.O","...O.O..O....OOO",".OOO.OXOOO.O.O..",".O.........O.O.O",".O.OOO.OOOOO.OOO",".O.O.O.O.O.....O",".OOO.OOO.OOOOO.."}
{"N 1","E 1","S 1"}
Returns: { }
{".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.X",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O","OO.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO"}
{"E 1","N 1","S 1","W 1"}
Returns: { 48, 49 }
{".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.X",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O","OO.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO"}
{"N 1","E 1","S 1","W 1"}
Returns: { 0, 49 }
{"OOOOOXOOOO"}
{"E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9"}
Returns: { 0, 0 }
{"..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................X...............................","..................O...............................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................",".................................................."}
{"S 1"}
Returns: { 18, 23 }
{".......O.........................O................",".......O.........................O................",".......O.........................O................",".......O.........................O................",".......O.........................O................",".......O.........................O................",".......O.........................O................",".......O.........................O................",".......O.........................O................",".......O.........................O................",".......O.........................O................",".......O.........................O................",".......O.........................O................",".......O.........................O................",".......O.........................O................",".......O.........................O................",".......O.........................O................",".......O.........................O................",".......O.........................O................",".......O.........................O................",".......O.........................O................",".......O.........................O................",".......OOOOOOOOOOOXOOOOOOOOOOOOOOO................","..................O...............................","..................O...............................","..................O...............................","..................O...............................","..................O...............................","..................O...............................","..................O...............................","..................O...............................","..................O...............................","..................O...............................","..................O...............................","..................OOOOOOOOOOOOOOOOO...............","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................",".................................................."}
{"W 9","W 7","N 6","N 6"}
Returns: { 18, 22 }
{"OOXOOOO"}
{"W 2"}
Returns: { 2, 0 }
{"...........O............................","..........OOOO..........................","..........OOO.....O....O................","...........OO....OOOOO.OO...............",".........OOO...OOOOOOO.OOOO....O........",".........OOOO...OOOOOO.OOOOOOOOO........","...........O..OOOOOOOOOOOOOOOOOOO.......","..........OOOOOOOOOOOOOOOOOOOOOO........",".......OOOOOOOOOOOOOOOOOOOO.O..O........","........OOOOOOOOOOOOOOOOOO..............","......OOO.OOOOOOOOXOOOOOOOOO............","...........OOOOOOOOOOOOOOOOO.OO.........","...........OOOOOOOOOOOOOOOOOOOOO........","............OOOOOOOOOOOOOOOOOOOO........","...........OOOOOOOOOOOOOOOOOOOOOO.......","............OOOOOOOOOOOOOOOOOOOOO.......",".............OOOOOOOOOOOOOOOOOOO........","...........OOOOOOOOOOOOOOOOOOOOO........","..........OOOOOOOOOOOOOOOOOOOOO.........","..........OOOOOOOOOOOOOOOOOOOOO.........","..........OOOOOOOOOOOOOOOOOOOOOOO.......","...........OOOOOOOOOOOOOOOOOOOOO........","............OOOOOOOOOOOOO.O.OOO.........",".............OOOOOOOOOOOO...OOOO........",".............OOOOOOOOOO...OOO.O.........","..............OOOOOOO.....O...OOO.......",".............OOOO.........OO..O.O.......","...............O...........O....O......."}
{"N 4","E 2","S 1","W 3","N 2","W 1","E 1","N 3","S 2","W 1","N 3","W 1","S 4"}
Returns: { 22, 16 }
{"...","OOX"}
{"E 1","N 1","S 1","E 1"}
Returns: { }
{"OOX"}
{"E 1","N 1","S 1","E 1"}
Returns: { }
{"..O.OOOOO","..OOO...O","..O.....O","O.O.....X","OOO......"}
{"S 1","E 2","N 1"}
Returns: { 4, 0 }
{".O.O.O.O.O.O.O.O.O.O.O.O.X.O.O.O.O.O.O.O.O.O.O.O..",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O",".O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O","OO.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO"}
{"S 1","N 1","S 1","N 1","S 1","N 1","S 1","N 1","S 1","N 1","S 1","N 1","S 1","N 1","S 1","N 1","S 1","N 1","S 1","N 1","S 1","N 1","S 1","N 1","S 1","N 1","S 1","N 1","S 1","N 1","S 1","N 1","S 1","N 1","S 1","N 1","S 1","N 1","S 1","N 1","S 1","N 1","S 1","N 1","S 1","N 1","S 1","N 1","S 1","E 1"}
Returns: { 24, 49 }
{"OO","X.","OO"}
{"W 1"}
Returns: { 0, 0 }
{"OXO","O.O"}
{"N 1"}
Returns: { 0, 0 }
{"OO",".X","OO"}
{"E 1"}
Returns: { 1, 0 }
{"O.O","OXO"}
{"S 1"}
Returns: { 0, 1 }
{"OOOOO","OXOOO","OOOOO",".O.O."}
{"N 1"}
Returns: { 0, 1 }
{"XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO"}
{"W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9","W 9","E 9"}
Returns: { 9, 0 }
{ "OOOOO", "OOX.O", "OOO.O" }
{ "N 1", "W 2" }
Returns: { 2, 0 }
{ "OX" }
{ "E 1" }
Returns: { 1, 0 }
{ "O", "O", "X" }
{ "N 1", "S 1" }
Returns: { 0, 2 }
{ "OOOOX", "O....", "OOOOO" }
{ "N 2" }
Returns: { 0, 0 }
{ "OOO", "OXO", "OOO" }
{ "N 1" }
Returns: { 1, 1 }
{ ".......", ".OOOOO.", ".OOOOO.", ".OOXOO.", ".OOOOO.", ".OOOOO.", "......." }
{ "N 1" }
Returns: { 3, 4 }
{ "OOOOO", "OOOOO", "OOXOO", "OOOOO", "OOOOO" }
{ "N 1" }
Returns: { 2, 3 }
{ "OOO", "OOO", "OOX" }
{ "E 2" }
Returns: { 2, 2 }
{ "O", "X", "O" }
{ "N 1", "S 1" }
Returns: { 0, 1 }
{ ".OOO", "OOOO", "OOXO", "OOOO" }
{ "E 1", "S 1" }
Returns: { 2, 1 }
{ "OX" }
{ "W 1", "E 1" }
Returns: { 1, 0 }
{ ".OOO", "OX.O", "...." }
{ "W 2" }
Returns: { 1, 0 }
{ "OX" }
{ "E 9" }
Returns: { }
{ ".X.", "OOO", ".O." }
{ "N 1" }
Returns: { 1, 1 }
{ ".....", ".XOO.", ".OOO.", ".OOO.", "....." }
{ "S 1", "E 1", "N 1", "W 1" }
Returns: { 1, 1 }
{ ".OO", "OOX", "OOO" }
{ "E 1" }
Returns: { 2, 0 }
{ ".O.", "OOO", "OXO" }
{ "S 1" }
Returns: { 1, 1 }
{ "O.X", "OOO" }
{ "E 2" }
Returns: { 2, 1 }
{ ".O.", "OOX", ".O." }
{ "E 1" }
Returns: { 1, 1 }
{ "OO.", "OXO", ".OO" }
{ "E 1", "S 1" }
Returns: { 1, 1 }
{ ".OOO", "OOXO", "OOOO" }
{ "E 1" }
Returns: { 2, 0 }
{ "X.O", "OOO" }
{ "E 2", "S 1" }
Returns: { }
{ "OXO", "OOO", "OOO" }
{ "S 1", "N 1" }
Returns: { 1, 0 }
{ ".OO", "OOO", "OXO" }
{ "S 1" }
Returns: { 1, 1 }
{ "..", "XO" }
{ "E 1", "W 1" }
Returns: { 0, 1 }
{ "OXO", "OOO", ".O.", ".O." }
{ "N 1" }
Returns: { 0, 0 }
{ "..OOOOOOOOOOOOOO", "..OOOOOOOOOOOOOO", "..OOOOOOOOOOOOOO", "..OOOOOOOOOOOOOO", "..OOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOO", "OOOOOOOOOOOOXOOO" }
{ "W 1", "E 1", "S 1" }
Returns: { 15, 11 }
{ "..........", "......O...", "...O.OO...", "...OOOO...", "...OXOO...", "...OOOO...", "...O.O....", ".........." }
{ "S 4" }
Returns: { 6, 5 }