Skip to content
Snippets Groups Projects
Commit 190dafdb authored by plojolo's avatar plojolo
Browse files

Class Utils

parent 5157a7db
Branches
No related tags found
No related merge requests found
package model;
import util.Position;
import java.util.*;
public class Utils {
static List<Position> neighbors(Position position) {
List<Position> list = new ArrayList<>();
if (position.row() > 0) list.add(new Position(position.row() - 1, position.column()));
if (position.column() > 0) list.add(new Position(position.row(), position.column() - 1));
if (position.row() < FirefighterBoard.rowCount - 1) list.add(new Position(position.row() + 1, position.column()));
if (position.column() < FirefighterBoard.columnCount - 1) list.add(new Position(position.row(), position.column() + 1));
return list;
}
static Position neighborClosestToFire(Position position) {
Set<Position> seen = new HashSet<>();
HashMap<Position, Position> firstMove = new HashMap<>();
Queue<Position> toVisit = new LinkedList<>(neighbors(position));
for (Position initialMove : toVisit)
firstMove.put(initialMove, initialMove);
while (!toVisit.isEmpty()) {
Position current = toVisit.poll();
if (Fire.firePositions.contains(current))
return firstMove.get(current);
for (Position adjacent : neighbors(current)) {
if (seen.contains(adjacent)) continue;
toVisit.add(adjacent);
seen.add(adjacent);
firstMove.put(adjacent, firstMove.get(current));
}
}
return position;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment