Statistics

Problem Statement for "Bikepath"

Problem Statement

Joe Freshman, the Stanford student, is trying to find the quickest way to get to his class in the morning. His preferred mode of transportation is a bicycle, but he has to drive around all of the buildings on campus. Given a String[] map which represents the terrain, return the shortest distance to his class. Each move counts as a distance of 1, and Joe may not travel diagonally.

The map will be comprised of the following characters:

@ (at sign) represents the starting and ending location of travel

. (period) represents a road he can travel on

X (capital letter X) represents a location he cannot travel on (due to a building, construction, etc.)

If it is impossible for Joe to get from the starting point to the ending point (due to untravelable locations), return -1.

Definition

Class:
Bikepath
Method:
fastest
Parameters:
String[]
Returns:
int
Method signature:
int fastest(String[] map)
(be sure your method is public)

Notes

  • If it is impossible for Joe to get from the starting point to the ending point (due to untravelable locations), return -1.

Constraints

  • map will contain between 5 and 20 elements, inclusive
  • each element of map will contain between 5 and 20 elements, inclusive
  • each element of map will contain the same number of characters as every other element of map
  • each element of map will only contain the characters '@', 'X', or '.'
  • the character '@' will appear exactly twice in map

Examples

  1. {"@....", ".....", ".....", ".....", "....@"}

    Returns: 8

  2. {"@...X", ".....", "....X", ".....", "....@"}

    Returns: 8

    Even though some spots are blocked off, the shortest path is still the same as before.

  3. {"@....", "XXXX.", ".....", "....X", "....@"}

    Returns: 10

    The blocked off locations force Joe to take a longer route than before.

  4. {"@.X..", ".X...", "X.X..", "...X.", "....@"}

    Returns: -1

  5. {"@@...", ".....", ".....", ".....", "....."}

    Returns: 1

  6. {"@...................", "XXXXXXXXXXXXXXXXXXX.", "....................", ".XXXXXXXXXXXXXXXXXXX", "....................", "XXXXXXXXXXXXXXXXXXX.", "....................", ".XXXXXXXXXXXXXXXXXXX", "....................", "XXXXXXXXXXXXXXXXXXX.", "....................", ".XXXXXXXXXXXXXXXXXXX", "....................", "XXXXXXXXXXXXXXXXXXX.", "....................", ".XXXXXXXXXXXXXXXXXXX", "....................", "XXXXXXXXXXXXXXXXXXX.", "....................", "@XXXXXXXXXXXXXXXXXXX"}

    Returns: 209

  7. {".XXXX.X", "X..XX.@", "@......", "...X.X.", ".X..X..", "X......", ".X.XX..", ".X.XXXX", "....X..", "X...X..", "X....XX", "XX....."}

    Returns: 7

  8. {".....X.XXXX...XXX.", "XX...X...@..XXX...", ".X...XX.X......XX.", "...XXX...XX....X..", ".X.X.X......XXXX..", "..X..XX...X......X", "X.XXX.XXX......X.X", ".X.X..............", "X.X..X..XX.....XX.", "XX.X.XXXXX..XX.XX.", "......X.X.......X.", "...X.X..XX.X....X.", "X.X.XXXX....X.XXX.", "....XX...X...X.X.X", "..X...XX..X..XXX..", "XX..X...XX.......X", "X.....X.XXXX.....X", "X.XXX.X....X.X....", ".XX...X...@XXX..X.", "...X....XX.X....X."}

    Returns: 38

  9. {"X...XX...X...X", "X.XXX.XXXXX.X.", ".XXX@X.X.X....", "....XX..X.X...", "....X.X..XX.X.", "X.X.X..X..X...", "X....X..X.XX..", "...X..XXXX...X", "..X...XX.X....", ".X..X.XXX.X@.X", ".XX...X....X.."}

    Returns: -1

  10. {".X.....XX.X.X.X...X.", "X....XXXX.X....XXX..", "....XXX......XXX.X..", ".XX.XX....X@XX.....X", "..XX....X.XXXXXXX...", ".X...X.XX..X.X...X..", "..X...X.XX...XX.....", ".....X...X....X....X", ".....X....X.X.X..X..", "....X.XX..X.XX....XX", ".XX.X.X.....XX.X.X..", ".@X.....X....XX..X..", ".XX..X...X..........", "..X..X.....X......X.", "XXXXX.XX..XX..X..XX.", "..XX...XXXX.X......X"}

    Returns: 22

  11. {"X...XXXXXX...X@...X.", "X..X....XX.....X.XXX", "X....X....X.....X...", "XX@...XX.....X.X.XXX", "..X...X........XXXXX", ".X...X..XX..X.......", "XXX.X.X.............", "XX.......XXXX..X.X..", "......XX.X....X.X...", ".X..X...X.XXX.XX...."}

    Returns: 19

  12. {"@....XX.....X..X...X", "XX.X.X.X..X..X..XXXX", ".X..XXX..X..X.X.X..X", "XX......X....XX....X", "X....X..X.....XXX.XX", ".X.XX..........X.X.X", ".X....XX.....X..X...", "XX..XX..XX..X.X....X", ".....X..XX.XX....X.X", "..XX..XX....X....XX.", "..X.XX.X......X...XX", "X.XX......X......X..", "....X...XX..XXX..X..", ".XX...X.XX.XX...XX..", "..XX.X...XX..XX.....", ".X.......X.XXXXXX..X", "X......X.X.......X..", "X.......XX.X.X......", "...X.X..X....XX.....", "XX..X...X.......X..@"}

    Returns: 38

  13. {"@...XX..XX.X..X.XX..", ".X.XX.XXXXX..X.X....", ".XX.X.XXX.........X.", "..X.X...XX.XX.XX.XX.", ".X.X...X...XX.....X.", "....XXXX...X....X...", "XXXX.X.XX.....X.XXX.", "X..X.......X.X.XXX.X", "..XX..X.X..X.....XXX", "..X..X.XXX.....X.X..", "....X.XXX..X...XX.XX", "..X.XXX.XX...XX.....", "XXX..XX.X.X.X....X.X", "X..X..X.X..X....X...", ".X.X...X.XX.....X..X", "..XX......XX........", ".X.....X..X.X.X.XX..", "XXX.XX..X....XXX....", ".X...X....X.X.X.....", "XXXXX..XXX.X....X.X@"}

    Returns: -1

  14. {"@.X.X..X..X.X.XXX...", "...X...X...X...X..X.", "..XX....X.XX..X.X.X.", "...X.X.X.X.....X....", "XX..XXX.X...X...X.X.", ".....XX.XXX.XX......", ".X...X.XX..X....X...", "X...XX.XXX.X...XXXXX", "..X..XX....X........", ".X...XX..X..X...X.X.", "..X.....XX...XX..X.X", "X.X..X...X...XXX..X.", ".......XX.XX.X..X.X.", "X..X.X.X............", "X..X.XX.XX.X....XXX.", "XXXXX....XX.....XX..", ".XXXX...X..X..X.....", "...X......X..X..XX..", ".X...XX.X.XX..XX.X.X", "X.....XXXX.X.X.....@"}

    Returns: 42

  15. {"@.X.XX..XX..XX.X..X.", "X.XXX.X...XX...X.X..", "........X..XX..X.XXX", ".X.X..XXX....XX...XX", "............XXX..X..", "X..XXX...XX........X", "X.X......X.X..X...X.", "X.X.X..XX.X..XX...X.", "..XX..XX...........X", "..XX.X..X.XX...X..X.", "XX.X..X...XX.X....X.", "XX....X...X..XX..XX.", "X........X.....X.X..", "XX.X.XXX......XXX.X.", ".X.....XX..XXX.XX.XX", "X.X..X....X...XX.X..", "....X.X.XX.....XX.X.", "XXX.XXX....X.XXXX.XX", "X..XXXX..XX..X.....X", "....X....X.....X...@"}

    Returns: 46

  16. { "@....", "XXXX.", ".....", "....X", "....@" }

    Returns: 10

  17. { "@....", "XXXX.", ".....", ".....", "....@" }

    Returns: 8

  18. { "@...................", "XXX.XXXX.XXXXX.XXXX.", "...X...X.X....X...X.", ".X.X.X.X.X..X.X.X.X.", ".X...X...X..X...X...", ".XXXX.XXXX.XXXX.XXXX", ".X...X...X..X...X...", ".X.X.X.X.X..X.X.X.X.", "...X...X.X....X...X.", "XXXXXXXX.XXXXXX.XXX.", "...X...X.X....X...X.", ".X.X.X.X.X..X.X.X.X.", ".X...X...X..X...X...", ".XXXXXXXXX.XXXX.XXXX", ".X...X...X..X...X...", ".X.X.X.X.X..X.X.X.X.", "...X...X.X....X...X.", "XXXXXXXX.XXXXXX.XXX.", "...X...X.XX...X...X.", ".X...X...X@.X...X..." }

    Returns: 53

  19. { "@....", ".....", ".....", ".....", "....@" }

    Returns: 8

  20. { ".....", ".....", "....@", "...@.", ".....", "....." }

    Returns: 2

  21. { ".....", ".@X..", ".X...", ".....", "....@" }

    Returns: 8


This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2024, TopCoder, Inc. All rights reserved.
This problem was used for: