Statistics

Problem Statement for "EllysViewPoints"

Problem Statement

Elly has a rectangular matrix with N rows and M columns. Each of the cells in the matrix can be either blocked (denoted '#') or free (denoted '.').

An empty cell is called a view point if we can see outside the matrix when looking directly in each of the four cardinal directions: north, south, east, and west. In other words, a cell C is a view point if and only if all cells in those four directions from cell C are free.

Below is an example matrix that contains six view points. One of these is marked by an asterisk ('*').

..#......
.....*...
.###..#..
.#.##..#.
...#..#..
.........

The girl has given you the ints N and M, as well as the String[] matrix. Return the number of view points in the given matrix.

Definition

Class:
EllysViewPoints
Method:
getCount
Parameters:
int, int, String[]
Returns:
int
Method signature:
int getCount(int N, int M, String[] matrix)
(be sure your method is public)

Constraints

  • N will be between 1 and 50, inclusive.
  • M will be between 1 and 50, inclusive.
  • matrix will contain exactly N elements.
  • Each element of matrix will contain exactly M characters.
  • Each character in matrix will be either '#' or '.'.

Examples

  1. 6

    9

    {"..#......", ".........", ".###..#..", ".#.##..#.", "...#..#..", "........."}

    Returns: 6

    The example from the problem statement.

  2. 1

    1

    {"."}

    Returns: 1

    It's pretty obvious which cell is the view point.

  3. 7

    4

    {"####", "####", "####", "####", "####", "####", "####"}

    Returns: 0

    With everything blocked, there are obviously no view points.

  4. 9

    48

    {"#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "................................................", ".#####...###...###.......##....###....##..#####.", "...#....#.....#...#.....#..#..#...#..#.#..#...#.", "...#....#.....#...#........#..#...#....#..#####.", "...#....#.....#...#......#....#...#....#......#.", "...#.....###...###......####...###.....#..#####.", "................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#."}

    Returns: 18

    Good luck!

  5. 20

    33

    {"...#............#.........#......", ".................................", "................#.....#.#......#.", ".................................", "........#..............##..#.....", "...#.....#.............#..##...#.", "....................##..#.#......", ".......#..............#...##.....", ".........#......#...#..#...#.....", "......................#....#.....", "..........................#......", ".................#..#.#...#......", ".................................", ".......................##.#......", "#......#.#...........#....#......", "#......#..............#...##.....", ".................................", "........#........................", ".................................", ".......................#........."}

    Returns: 90

  6. 1

    1

    {"."}

    Returns: 1

  7. 7

    4

    {"....", "....", "....", "....", "....", "....", "...."}

    Returns: 28

  8. 1

    42

    {".........................................."}

    Returns: 42

  9. 42

    1

    {".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", "."}

    Returns: 42

  10. 27

    27

    {"...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", ".............#.............", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "..........................."}

    Returns: 676

  11. 50

    50

    {"#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#"}

    Returns: 0

  12. 50

    50

    {"#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".................................................."}

    Returns: 625

  13. 50

    50

    {"##################################################", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "##################################################"}

    Returns: 0

  14. 50

    50

    {"..................................................", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".................................................."}

    Returns: 4

  15. 50

    50

    {"..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", ".................................................."}

    Returns: 2500

  16. 50

    50

    {"##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################"}

    Returns: 0

  17. 47

    42

    {"#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "..........................................", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################"}

    Returns: 1

  18. 50

    50

    {"#................................................#", ".#..............................................#.", "..#............................................#..", "...#..........................................#...", "....#........................................#....", ".....#......................................#.....", "......#....................................#......", ".......#..................................#.......", "........#................................#........", ".........#..............................#.........", "..........#............................#..........", "...........#..........................#...........", "............#........................#............", ".............#......................#.............", "..............#....................#..............", "...............#..................#...............", "................#................#................", ".................#..............#.................", "..................#............#..................", "...................#..........#...................", "....................#........#....................", ".....................#......#.....................", "......................#....#......................", ".......................#..#.......................", "........................##........................", "........................##........................", ".......................#..#.......................", "......................#....#......................", ".....................#......#.....................", "....................#........#....................", "...................#..........#...................", "..................#............#..................", ".................#..............#.................", "................#................#................", "...............#..................#...............", "..............#....................#..............", ".............#......................#.............", "............#........................#............", "...........#..........................#...........", "..........#............................#..........", ".........#..............................#.........", "........#................................#........", ".......#..................................#.......", "......#....................................#......", ".....#......................................#.....", "....#........................................#....", "...#..........................................#...", "..#............................................#..", ".#..............................................#.", "#................................................#"}

    Returns: 0

  19. 10

    5

    {"..##.", ".....", ".....", ".....", "...#.", ".....", ".....", ".....", ".....", "#...."}

    Returns: 14

  20. 10

    5

    {".#...", ".....", ".....", ".....", ".....", ".....", "...#.", ".#...", ".#...", "....."}

    Returns: 18

  21. 3

    18

    {"..................", ".....##..#.....#..", ".................."}

    Returns: 28

  22. 3

    18

    {".#....#.#.#....#.#", "...#..#.#.........", ".#.........##....."}

    Returns: 0

  23. 15

    11

    {"..#.......#", "......#....", "..........#", "..#........", "#.#.......#", "...........", "...........", "...........", "...##......", ".........#.", "..........#", "....#..#...", "....#......", "........#..", ".......#..."}

    Returns: 6

  24. 20

    30

    {".....#........................", "..............................", "..............................", "..............................", "...#..........................", "........#...#.................", "..............................", "..............................", "............#............#....", "..............................", "...........................#..", ".....#........................", "..............................", ".....................#........", "..............................", "...........#..........#.......", "..............................", "......#...............#.......", "............................#.", ".............................."}

    Returns: 190

  25. 20

    30

    {"..#....#......................", "....#...........#....#........", "..#................##.........", "...#.............#............", "#...........................#.", "..##.#...#...................#", "......#..#...................#", ".........#...#....#..........#", "......#..................#....", "......##........##............", "..#.......#...........#..#....", "..#.............#.............", "....#...#...................#.", "........#......#..............", ".#...#.............#....##....", ".....#.##.................#...", "...............#....#...##....", "..............................", ".....#........#..............#", "#.................#..#........"}

    Returns: 4

  26. 25

    25

    {".........................", ".............#.......##..", "..................#......", ".........................", ".........................", ".........................", "..................#......", ".....#.......#.......#...", ".........................", ".....#...#....#....#.....", ".....#............#......", ".........................", "...#...........#.........", "#.....#..................", "#......#.................", "................#........", "....................#....", "...................#.....", "..#......#...........#...", ".........................", "...#.....................", "..#.....................#", ".........................", ".........................", ".............#..........."}

    Returns: 72

  27. 25

    25

    {"...#..#..#......##.......", ".#..#...#................", "................#......#.", ".........................", "........#..#.....#.......", "......#....#.#........#..", "......#...........#...#.#", ".#.............##......#.", ".#.##.....#.#.#..#.......", ".#..#....#.......#.......", ".............#.......#...", "......#...............##.", ".....#...................", "...#.#..#.......#........", "..............#.....#.##.", "##.#.......#....#........", "..#..............#.#.....", ".#.......................", "..#................#.....", "..#.##..##.#.#...........", "......#..........#..#....", "......#..............#...", "..........#..#........#..", ".#.......................", ".##..##.............#...."}

    Returns: 1

  28. 42

    42

    {"................#.........................", "..................#.......................", "....#..........#...............#.#........", "..........#...............................", "........................#...........#...#.", "..........................................", "..#.......................................", "...............................##.........", ".......#...............#....#.............", "..........#...............................", "........#...............#.........#......#", ".........................................#", "...................#......................", "..........................................", "..........#...............................", "........#.................................", ".........................#................", ".........................#......#..#......", "....#...........................#.........", "..#.............#..............#..........", ".......#..............#...............#...", "..........................................", ".....................#..#..........##.....", "....................#.....................", "...............#..........................", ".#........................................", "........................#......#..........", "...................#...........#..........", ".......#......................#...........", "....#..........................#..........", "................#....#.........#..........", "...............................#.......#..", "##...........................#............", ".#........................................", "......................................#...", "..#......#................................", "............#........#....................", "..........................#...............", "...#...............#......................", ".................#........................", "................................#...#.....", ".......................#.#................"}

    Returns: 21

  29. 42

    42

    {"..........................................", "#.........................................", "..##......................................", "....................................#.....", "...................#.........#...........#", "..................##............#.........", "..#....#.#......#....#....................", "#......#......................#...........", "..#...#..#.....................#.#........", ".....#.#...............#.....#............", "..................................#.......", "..................#....................#..", ".............................#....##.....#", "................#.........................", "........#.............#......#............", ".........##......#...#..........#.......##", ".......................#...#..............", "#.......................#..#..............", "....#.....................#...............", "........#...#.............................", "..........................................", ".................##..............#........", "..........................................", ".........#...........##....#..............", "..#..................#....................", "..........................................", "#...............................#...#.....", ".............#..............#.............", "...#......................................", "...#......................................", "..............#........#..................", "......................#...................", "#.........#...............................", ".#..#.....................#.........#.....", "........###..................#.......#...#", ".......#............#.................#...", "........#............#.................#..", ".........#...#............................", ".................#.....#..........#.......", ".................................#........", "..............#...........#...............", "..................#.....#..#..#..........."}

    Returns: 12

  30. 42

    42

    {".#...##.#.....#.#.#....#....###.#.#...#.##", "#...##....###.###.###...#..#..###..##..#..", "##.##..#..##...##.#.#.##........########.#", "..#..#.##...###....#.#.#.#####....##.....#", "##..#..#..#.#..#.#.#.##.###.......#.##...#", "#.#..###...##....#.......#.........#.#...#", ".###.#..#....####......#.#..####..#####.#.", "#.#....#..##.##.#.#...#.#.#.##..#..#..#..#", "#.###..##.#.##.....#........###...#....#..", "###....####..###....#..#..#.#..#......#.#.", "........#..#....#.##....#......##.#.##..##", ".###.#..##..#..#.#.##...#....#...###....#.", ".##...#.....#.#..##.....##.##.##.#######..", "#.#.....##....###.#..##....#.#####.##....#", "#.##..#..#....##.#.#..##.###....#.###.###.", "####..#...#.####..###.#.#...##...#.#..##.#", ".#....#...##....##..##....#####.###..#....", "......#..#..##.#...#.#.##....#.#####....#.", "#..##.#..#.###.#.#.####...#...###..##..#..", "#.#..#.#.##..#.###..###....#...###..#.....", "..#.#.#.####.....#.##.#...####..#..#.....#", ".........###..###.##..#.#..#..#######...#.", "###..#......#.#.#.#...###.#..#######...##.", "#....##....###......#...##..###..#.###..#.", "####...#.#.######.####.#.##.#...#.#....#..", "..#.##.......#..##..#..###...#...##..#.##.", ".##.##.#..##.###.#...#.#.##...#.....#.#.#.", "####.#.###..###.#..###..#...#..###.#.#..#.", ".##..#..#.#.#.....#..####.#.#.#...#..#####", "###....###.#..#.##.#..#####..#.##..#......", "..#.##.##.......#.##.#.....#.#.##..#..#..#", ".###.##.......#.#######.#######.#....#.#..", "#.#......#..##.##.#......#.#..#..###.###.#", "...###....##.##.#...###....#.......#...###", "..#####..###.#.#..#...#.#....#.......#####", "###....#.#.....###......#.....####......#.", ".######....##.###.##.........##..#.#...###", "#.###....##..##.#..######.....######.....#", "##.####.###....#.#.###.##.#.#...########..", ".#.#.##....#####...#..##.##..#....####...#", "#...##.#.##..####.#.##.###.#.####...#.####", "###...#.......#..#....#.##..#.....#.#..#.."}

    Returns: 0

  31. 47

    49

    {".........................................#.......", ".................................................", "..............................................#..", ".............#.......#...........................", "........................................#........", ".................................................", "....#............................................", ".#...#..............#..........#.................", ".................................................", ".................................................", ".........................#.#.#...............#...", "...........#.....................................", "..........#......................................", ".................................................", ".................................................", "..................................#..............", "..........#.....................#.........#......", "......#..........................................", ".................................................", ".................................#....#..........", "..............#..................................", "........................#...................#..#.", "..........#......................................", "#...................#.................#.....##.#.", ".................................................", ".....#..#.........##........................#....", "................................#................", "....#..............................#.............", ".................................................", "...........#.....................................", ".................#...............................", "...........................#.....................", "...............#.#.......#.......................", ".................................................", "..................#.........#..........#.........", ".................................................", "....................#....................#.......", "...........................................#.....", "...........#.......#..........#..................", "................#................................", "........#......................#.................", "...............................................#.", ".....#........................................#..", ".................................................", ".......#.#....#..........#.......................", ".....#...........................................", "................................................."}

    Returns: 117

  32. 47

    49

    {"..........................................#......", ".................................................", "#................#..#...........#................", "...#.............#...##............#........#....", "..............................#..................", ".....#......................#..#.................", "..#...........#...#.....#.........#..............", "..........................#..................#...", "..............................#...........#......", "...#.......#.........##....................#.....", ".............................#......##...........", "............#.#.........................#........", "..............#..................................", ".................................................", "..............#..................................", "..................#..#..........#................", "...................................#.....#.......", "............#.....................#.......#......", ".............#...................................", "............#..........................#........#", ".#.........#..............................#......", "...................#.#...........................", ".....................#...........................", "...................#............##...............", "........#.............#...............#..#.......", ".................................................", "......##.........................................", "......#.........................#................", ".................................#..............#", "...#.....#...............................#.#.....", "....................#...#....................#...", "..........#................#...............#.....", "..........#............#.........................", "......#.................#....................#...", ".................................#......#........", ".......................#.........................", "........#..#.....................................", "..#.....................#..#......#....#.........", "...#.....#......##...................#..#........", "...................................#............#", "..........#.........#...........................#", ".................................................", ".........#....#...............##....#............", "..#..#...........................................", "........#........................................", ".............#.................................#.", ".................................#........##....#"}

    Returns: 16

  33. 47

    49

    {"......#..............#............#..#....#......", "....#....#..........#....##.#.#..........#.#.....", "#..................#..................#..#.....#.", "...#.........#...................#...#...........", "..##..............#..............................", "...............................##..........#.....", ".....#..........#...#.....#..................#...", "..................#..........................#...", "...##............#...............................", ".........#........#.#..##........................", "....#......#.......#........#....#......#........", "......#..............###...........#...........##", ".......#....#..........#.........................", ".......#...............#..............#......#...", ".............#.........#..............#..........", "...................................#....#......#.", "........#.#.#........#.#...#.....#.........#.#...", "..............................##............#...#", "......#...#...#.#..................#....##...#...", "..#.................#...#..............#..#......", ".#.........#.....#............#..................", "....#.....#........#..#.........#................", ".#.#.....................#.#.#...............#...", "...##...........#...#.#.....#.......#.......##...", "...#...........#.....##.............#............", "##...............................................", "..#........#..#.........#........................", "...................##.........#..........#.......", ".........#..............#........................", ".......................#.....................#...", ".........................##..#..#..#.#...........", ".....#.#...................#......#......###.....", "..........#.#..........#.#.....#......#..........", ".....#.#..............#..........#..#...........#", "..#.##....##.....##....................#.........", "......#.........#...........#..............#.....", "....#........#......#......#...#..#.##...........", "..........#..............#..........#........#...", "#..#.....#.............#..............#.#.#......", ".............#....#.#............................", "..#.................##..#.............#..........", ".#.#...........#................#...#.......#....", "...............#...#.#.#.........................", ".##....#.......................#...#........#....", "........................##......#................", "....#..#.##.#......#.#...#...#....#.#.......#....", "##...#....................................#......"}

    Returns: 0

  34. 49

    44

    {"................#..........................#", "#......#.............#.....#.#...........#..", "..........#.......#......................#..", "..................#...#.#.........#........#", ".....#.................##.#.....#.....#..#..", "....#.#.#.......#..#.......#..#.............", ".....##..#..............................#...", "#.....................#.#....#..............", "..#...........#................#........#...", "....................#...#.........#.........", ".....#.........##..#............#...........", "#......#...#.......................#.......#", "......#.........#.#.......#..#..............", "...........................#.....#..........", "........#..........##........#..........##..", "............................................", "..###.#......#................##..#.....#...", "...................#......##..##............", ".................#..#............#..........", ".....#.##...........#..#....................", "#.....#......#.........#....................", "....#..............#.........#..............", ".......##..................#..........#...#.", "..........#....#.##.........................", "#..........#.##....#.#.....#................", "..........#.........#......#................", ".......##...#...#......#......#............#", "...............#................#...........", ".#...#..###.#........#........##...........#", ".......##.....................##..#.........", "..#......##....#....#...#...................", "..##..................#.#....#...##........#", ".#......................#....#..............", "..........#.........##.#....................", "..#...#........#..#.....#........#........#.", "...................##.............#.......#.", "...##.....#.#....###...##......#.#....#.....", "...#.#.#....#..................#......#.....", ".........#........................#.........", ".......................#....................", "................#.................##........", "....#........#.........#................#...", "#...........##.....#........................", "....#......#.....##.....#...................", ".....#.##..............#.................#..", "..............#..#......................#...", ".#..............#...........................", ".....#....##..................#.............", "............................................"}

    Returns: 10

  35. 22

    15

    {".#..#.#.#.##...", "##..#....###...", "..#.#..........", "###.#.#.#.##...", "...............", "#.#.#.#.#.##...", "###.#...###....", "...............", "##..#.#.##.#...", ".##.#.#.####...", "...............", "...............", "....#.#.#..#...", "###......##....", "...............", "...............", "#...#...#.#....", "...............", "........##.#...", "###.#.#.###....", "##..#.#..###...", "..............."}

    Returns: 48

  36. 2

    26

    {"..........................", ".#....#.#......######.#..."}

    Returns: 16

  37. 14

    23

    {".......................", ".......................", "...............#...#...", "....#..................", "....#..................", ".............#.........", ".......................", ".........#.............", "................#......", ".......................", "...#...................", ".......................", ".......................", "......................."}

    Returns: 112

  38. 42

    31

    {"######.#.#..###....#....#..#.#.", "...............................", "...............................", "...............................", ".#.###.....#.##..####...#......", "###..#.#.#..##.....##...#..#.#.", "##.###.#.#.####.........#..#.#.", ".#.#.#.....####..###....#....#.", "...............................", "...............................", "...............................", "...............................", "...............................", "##.###.#.#.##.#..#..#...#..#...", "#.#..#.#.#.#..#..####...#..#.#.", "...............................", "...............................", "...............................", ".###.#.#.#..###..##.....#..#.#.", "...............................", "#.##.#...#.####..###....#..#...", "...............................", "...............................", "##.#.#.#.#..#....####...#....#.", "...............................", "#.##.#.#.#..###..####......#.#.", ".###.#.#.#.####...###......#.#.", ".#.###.#...###...#..#...#..#.#.", "...............................", "##.##..#.#...##..##.#...#..#...", "...............................", "...............................", "...............................", ".#.#.#.#....###..####...#..#...", "###..#...#..##...#.##...#..#...", "...............................", "######.#...##.#..###....#..#.#.", "...............................", "...............................", "##.###...#.####..###....#..#...", "...............................", "..............................."}

    Returns: 288

  39. 48

    2

    {"..", ".#", "..", "..", "#.", ".#", "..", "..", "#.", "#.", "..", "..", ".#", ".#", "##", "#.", "..", "#.", ".#", "..", ".#", "##", "#.", "#.", "..", "..", "..", "..", "..", "..", "#.", "##", ".#", "..", "##", ".#", "##", "#.", "##", "#.", ".#", "..", "..", "#.", "..", "#.", "##", ".#"}

    Returns: 0

  40. 9

    5

    {".###.", "..#..", ".....", ".....", "#..#.", ".#...", ".....", "...#.", "...#."}

    Returns: 3

  41. 47

    20

    {"....................", "#..#.....######.#.#.", ".....#..###.###.....", "....................", "..##.#..##.#.#..#...", "...#.#.#.#####..#.#.", "...#.#..#######.#.#.", "#.##.#.##.#..##.#.#.", "#..#...#.#...##...#.", "..#..#.#####.##.#.#.", "#.#..#...##.......#.", "..##.#.#..###.#.....", "....................", "....................", "....................", "....................", "#..#...##.#.#.#.#.#.", "#.##.#.#.#.#....#...", "#.#....###.#.##.#.#.", "...#.#.###....#...#.", "....................", ".......########.#.#.", "#.##....#.#...#.#.#.", "#.##....####.##.#...", "#.##.#..###..##.....", "#.##.#.##.##..#.#.#.", "#..#...####.#.#.#...", "..##.#.#.#.##.#.#...", "#..#.#..#####.#.#...", "#..#.#..##.#.##.#...", "#.##.#...###....#.#.", "#.##.#.#.####...#...", "#.##....#.....#.#.#.", "..##.#....#####.#...", "#.##.#.#.##..#..#.#.", "....................", "#.##.#.##...#.#.#...", "#.##.#.#.#..###.#.#.", "#..#.#.....##...#.#.", "#.##....#####.....#.", "....................", "#.#..#.#.#.##.....#.", "...#...#.#.####.#.#.", "....................", "..#..#..#...##......", "#..#.#...#.##.#.#.#.", "..##...###.#..#...#."}

    Returns: 60

  42. 30

    28

    {".###.#.#..........#........#", ".#.#.#.#.#..#...#..#...#..##", "............................", "............................", "............................", "............................", ".#...#.#.#..#...#.#....#..##", ".##..#......#...#.##.......#", "####.#...#..#...#.#.......#.", "###.............#.##......#.", "............................", "............................", "............................", "............................", "............................", ".##..#.#.#..#.....##...#..#.", "............................", "##.#........#...#.##...#..##", "####.#.#.#......#.##...#..#.", "####.#.#.#........##...#...#", ".##..#.#.#..#..........#....", "............................", "............................", "............................", "..#......#..#......#...#...#", "............................", "####.#...#..#...#.........##", "####.#.#....#...............", "####.#.#.#..#...#.##...#...#", ".###.#......#...#..#...#...."}

    Returns: 196

  43. 24

    43

    {".........................#........#..#....#", "..........#.....................#.........#", "...........................#............###", "...........................................", "...............#...........#..#............", "...#.......#..................#............", "...................#........#.....#...##...", "...............#.....#...#...#.............", "............#..........#......#.......#....", "..........#.#..#............#...........#..", "...........#...............##.#.......#.#..", "...#...............#.......................", "...........................................", "#...................#.........#..........#.", "...................#....##....#.......#....", ".#.................#.#......#....#......##.", "...........................................", "...........................................", ".................#...#...#....#..#...##.#..", "...........................................", "...#...................#....##.......#.....", "#......................#.........#....#..#.", "...................#.......................", ".......................##...#.............."}

    Returns: 80

  44. 45

    6

    {"......", "......", "......", "....##", "#..#.#", "......", ".....#", "......", ".....#", "...#..", ".....#", ".....#", "#..#..", "...##.", "......", "...#..", "....#.", "....##", "#.....", "......", ".....#", "......", "......", "......", "....#.", "......", "#.....", "......", "#.....", "#...#.", "......", ".....#", "#....#", "#..###", "#..#..", "#.....", "...##.", "......", ".....#", "....#.", "....#.", "....#.", "#..##.", "......", "...###"}

    Returns: 30

  45. 12

    49

    {"....#.####.#.....####..###..#...#####...##.#.#..#", ".#.#######.###.#.###..####..##..######.#.#..##.##", "##.###.#....#.#..#..#.#####..##.#.####..##..##.##", "....######..##.#.#.##.#..##.#.#.##.###..##.##....", "##..#.####.#..##.#..#.##......#.######..#..#.#.##", "##.##.#.#..#####.####.#.##....#.####.#...#.#.#.#.", "##.##..##..#####...#..#..##.#.#.#.####..#...##..#", "##.###.###.##.#..#.#..#####.###.#.##.#..##.###.##", "##.#######.#####.####.####..##..##...#.###.##...#", ".#.#######.#####.####.###.#.###.######...#.....##", "##.#####.#.#####..###.##.##.##..######.###.#....#", "##..######.#.###..#.#..####.###.#####..#...###..."}

    Returns: 0

  46. 8

    23

    {".......................", "....#..#.#.............", ".......................", "..#......#.#......#.#..", "#................#.####", "#.#..##....#....#......", "#.#................#..#", "......................."}

    Returns: 24

  47. 7

    26

    {"####.##..###.##..##....#.#", "####.##...##.##..##..#.#.#", ".###.###.##..##...#..#.#.#", "####.###.###.##..#...#....", "..........................", "#.##.###.##..##..##..#.#.#", "####.###.###.##..#...#.#.#"}

    Returns: 9

  48. 25

    14

    {".#....#..#.#..", "..##..#..#..#.", ".#.#.#.##..#..", "..#....#...#..", ".###.#.#......", ".....#..##..#.", ".###...###.##.", "..##...###..#.", ".##..#####.#..", ".##.........#.", ".#.#....#..##.", "..#..#.##.....", "...#.###...##.", ".###.####..#..", "...#....##....", ".##..###...##.", ".###.##.#...#.", ".#...#.##..##.", ".##...#..#.#..", ".#...##.#...#.", ".#...###.#..#.", ".##..###...##.", ".###.###...##.", "..##.#........", ".....#####.#.."}

    Returns: 0

  49. 40

    42

    {"...#.#....................#....#....#.....", ".#................#.#...#.#...........#...", ".#...#.#.......#..##...#..#...#....#......", ".....#..#...............#...#......#......", ".....#..#......#.##.....#.........##..#...", "..........................................", "#...................#....#....#.......##..", ".##...#...#............#.............#...#", "..........................................", "#....#..#.#......#......###....#.........#", "#..#....#........#.##..##.#......#..#.....", "#.............................#...##......", "......#...#....#.....#....#......#...###..", ".......#....................#..#.#.#..#...", "..#...#..........#..#................#...#", "..#...#...#........#........#.#...........", "#.##......#.#.......#.....#....#..##.##...", "..........................................", "##...............#..#................#...#", "#.#.........#....#.......#...#...#.#......", "...#.#......#..#.##.......#.##.#.#.....#.#", ".##..##............#.........#.#......#...", ".#.............#.....#......##.#..........", "..........................................", "..........................................", "..........................................", ".#....#.....#.......#..................#.#", "..........................................", ".......#.........#.......#..#......#.#...#", ".....#..............#.........#...#..#...#", "..##..##.#.....#.####..#.#..##...........#", "#.........#....#..#......#.....#..........", "..........................................", "..........................................", "..#...#.###..............#..##...#.....#..", "..........................................", "..........................................", "..........................................", ".....#..#...#......#.........#......##....", ".###..##..#......##.#...#..........#.#...."}

    Returns: 108

  50. 44

    45

    {"#..............#.....#.......................", ".#..#..........#...#........................#", ".......##.......#.....#.#....................", ".............................##......#..#....", ".#.#..........#....#..#......#............#..", "...#.................#..#.........##....#....", ".............................................", "...#...........#......#..#...#...#....#......", "..#.....................#....................", ".#..#............#.#.#....#.....##.........#.", ".............................................", ".............................................", "..##..##.......#...................#.......##", "...##..........#.............#...#...........", ".............................................", ".............................................", ".............................................", ".##..............#.#....#.....#...#.....##...", "..........#..#...............#...............", "..#....#........#....................#...#..#", "........#.......................#...#........", "....#...#...#..................#.............", ".............................................", ".............................................", ".............................................", ".......#.........#....#...#..#...#.#.........", ".##.............#............#....#..........", "#......#...........#....#.#......##......#...", "#.#...........#..#........................#..", "........#......#..........#....#..#.......#..", "#.....###......................#......#...#..", ".............................................", ".............................................", "#............#...#.........................#.", ".............................................", "..............##.................##....###...", "..#...##....#.#..#...#..............#.....#..", "....#.#..............#...........#.#.........", "......#...#...................#.....##.....#.", "......#...............#..................##..", ".#..#.....#......................###..#......", ".#............#..........................#..#", "#..............#......#.......#.##...........", "...#........###.......#................#....."}

    Returns: 96

  51. 6

    42

    {"....##..#....##..#.##.#...........#...#.#.", ".........#.............#.#.....#..##.....#", "...#.......#.#...#.........#.#..#.#....##.", "..........................................", "......#.....#..###..#.....#....###.#.#.#..", "......##......####....#.#..##.......##..#."}

    Returns: 7

  52. 9

    48

    {"#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "................................................", ".#####...###...###.......##....###....##..#####.", "...#....#.....#...#.....#..#..#...#..#.#..#...#.", "...#....#.....#...#........#..#...#....#..#####.", "...#....#.....#...#......#....#...#....#......#.", "...#.....###...###......####...###.....#..#####.", "................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#." }

    Returns: 18

  53. 1

    4

    {"...." }

    Returns: 4

  54. 6

    9

    {"..#......", ".........", ".###..#..", ".#.##..#.", "...#..#..", "........." }

    Returns: 6

  55. 4

    4

    {"####", "....", "####", "####" }

    Returns: 0

  56. 1

    1

    {"#" }

    Returns: 0

  57. 1

    1

    {"." }

    Returns: 1

  58. 3

    3

    {"...", ".#.", "..." }

    Returns: 4


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: