# GridTools solution

Complete the GridTools practice problem before reviewing the solution.

Review the GridTools solution with AP CS Tutor Brandon Horn.

## Part (a) `blueNeighbors` method

``````public List<Actor> blueNeighbors(Location loc)
{
List<Actor> blueNeighbors = new ArrayList<Actor>();

for (Actor neighbor : gr.getNeighbors(loc))
if (neighbor.getColor().equals(Color.BLUE))

return blueNeighbors;
}
``````

## Part (b) `actorsWithBlueNeighbors` method

``````public List<Actor> actorsWithBlueNeighbors()
{
List<Actor> haveBlueNeighbors = new ArrayList<Actor>();

for (Location occupiedLoc : gr.getOccupiedLocations())
if (blueNeighbors(occupiedLoc).size() > 0)

return haveBlueNeighbors;
}
``````

## Part (c) `actorWithMostBlueNeighbors` method

``````public Actor actorWithMostBlueNeighbors()
{
List<Actor> haveBlueNeighbors = actorsWithBlueNeighbors();

if (haveBlueNeighbors.size() == 0)
return null;

Actor hasMostBlueNeighbors = haveBlueNeighbors.get(0);

for (int i = 1; i < haveBlueNeighbors.size(); i++)
{
if (blueNeighbors(haveBlueNeighbors.get(i).getLocation()).size() >
blueNeighbors(hasMostBlueNeighbors.getLocation()).size())
{
hasMostBlueNeighbors = haveBlueNeighbors.get(i);
}
}

return hasMostBlueNeighbors;
}
``````

## Part (d) `getEmptyWithinSpots` method

``````public List<Location> getEmptyWithinSpots(Location center, int spots)
{
List<Location> emptyWithinSpots = new ArrayList<Location>();

for (int row = center.getRow() - spots; row <= center.getRow() + spots; row++)
{
for (int col = center.getCol() - spots; col <= center.getCol() + spots; col++)
{
Location loc = new Location(row, col);
if (gr.isValid(loc) && gr.get(loc) == null)